Как определить, когда кто-то покидает приложение? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть кнопка, которая воспроизводит звук в моем приложении.Если пользователь покидает экран и приложение работает в фоновом режиме, оно все равно воспроизводится.Как определить, когда пользователь находится за пределами приложения, чтобы я мог остановить воспроизведение звука в фоновом режиме?

Основной код активности для текущей кнопки остановки в приложении

    stop_button = findViewById(R.id.stop_button);
    stop_button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (longplay_button.isChecked() &&  meme_Sound_Media_Player.isPlaying()) {
                meme_Sound_Media_Player.pause();
                meme_Sound_Media_Player.seekTo(0);
                longplay_button.setEnabled(true);

            } else if (memeSoundMediaPlayer.isPlaying()) {
                memeSoundMediaPlayer.pause();
                memeSoundMediaPlayer.seekTo(0);
                longplay_button.setEnabled(true);
            }
            else {
                Toast.makeText(getBaseContext(), "nothing is playing", Toast.LENGTH_SHORT).show();
            }

            if (inactiveButton.isShown()) {
                inactiveButton.setImageResource(R.drawable.button_pressed);
                inactiveButton.setEnabled(true);
                Toast.makeText(getBaseContext(), "Playback Stopped", Toast.LENGTH_SHORT).show();


            }

        }
    });

}

Ошибка 1

Error 1

Ошибка 2

enter image description here

Текущий просмотр enter image description here

1 Ответ

0 голосов
/ 13 июня 2019

Извлеките эту зависимость из файла build.gradle:

   dependencies {
   implementation "android.arch.lifecycle:extensions:1.1.1"
  }

Тогда в вашем классе Application используйте это:

public class MyApplication extends Application implements LifecycleObserver {

@Override
public void onCreate() {
    super.onCreate();
    ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
private void onAppBackgrounded() {
    Log.d("MyApp", "App in background");
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
private void onAppForegrounded() {
    Log.d("MyApp", "App in foreground");
}
}

Обновите файл AndroidManifest.xml:

<application
    android:name=".MyApplication"
    ....>
</application>
...