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 запускается, когда приложение переходит в фоновый режим.