onSaveInstanceState() для кнопок Android

У меня есть одна кнопка для игры и остановки. Кнопки работают отлично, но когда я играю музыку, перехожу в фоновый режим к другому приложению, а затем возвращаюсь в свое приложение, моя кнопка воспроизведения / остановки начинает играть снова, если я нажимаю ее. Это проблема, потому что мне нужно снова нажать кнопку воспроизведения (хотя музыка играет), а затем нажать кнопку остановки. Я нахожу способ сделать это с помощью onSaveInstanceState(), но он не работает, проблема снова здесь, мне нужно нажать кнопку воспроизведения, чтобы остановить музыку, которая играет в фоновом режиме мой код:

int button_status=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.player);
    if (savedInstanceState != null) {
        button_status = savedInstanceState.getInt("EXTRA_IS_ON");
    }}

@Override
public void onSaveInstanceState(Bundle outState) {

    outState.putInt("EXTRA_IS_ON", button_status);
    super.onSaveInstanceState(outState);
}

public void onClick(View v) {
    internetKonekcija = pk.konekcijaPremaInternetu();


    if(button_status == 1)//play the service
    {
    button_status=0;
    startService(new Intent(this, Service.class));
    }
    else//stop the service
    {
    button_status=1;

    stopService(new Intent(this, Service.class));
    }       

2 ответа

Решение

Я бы посоветовал подойти к этому по-другому: вместо того, чтобы пытаться сохранить флаг о том, работает ли ваш сервис или нет, и, следовательно, иметь возможность ошибочного флага, почему бы не запросить, работает ли сервис, когда вам это нужно? Смотрите этот ответ для предложения как: /questions/34814266/kak-proverit-rabotaet-li-servis-na-android/34814287#34814287

Почему вы проверяете сохраненное состояние в onCreate? проверьте это в onRestoreInstanceState. Может быть, это поможет.

На самом деле ваше приложение переходит в onPause, когда вы переходите в фоновый режим. Я действительно не уверен, что onSavedInstanceState запускается, когда приложение переходит в фоновый режим.

Другие вопросы по тегам