我有一个应用程序,它有一个播放音乐的服务。这是有效的,因为服务只是继续(因此播放)。
但是,当用户在任何活动中按下主页键时,我应该能够检测到我的应用程序是否空闲。我一直在环顾四周,我发现的每个问题都有一个问题:“使用onPause()或onStop()”但这只适用于一个活动,将代码复制到每个活动看起来像是一个肮脏的解决方案。
在我的主要内容中,我尝试过:
我考虑过从main检测当前的活动,但这是一个太脏的解决方案。
在我的主要活动中,我开始服务(backgroundMusicPlayer):
@Override
protected void onCreate(Bundle savedInstanceState) {
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
setContentView(R.layout.activity_main);
else
setContentView(R.layout.activity_main_landscape);
//_________BRON(MediaPlayer): http://stackoverflow.com/questions/3369068/android-play-sound-on-button-click-null-pointer-exception
backgroundMusicPlayer = new Intent(MainActivity.this, BackgroundMusicPlayer.class);
startService(backgroundMusicPlayer);
mp = MediaPlayer.create(MainActivity.this, R.raw.buttonclick); //knopgeluiden laden
super.onCreate(savedInstanceState);
}
我该怎么办?
答案 0 :(得分:0)
您需要知道的是您的活动在后台(以及何时返回)。有几种方法可以做到这一点,但我找到的可靠方法基于this回答。
它的前提是在活动转换之间使用时间参考很可能提供足够的证据证明应用程序已经“背景化”。
这对我有用,在回调中你可以可靠地告诉你的服务做你想做的事。
此外,如果您的应用程序进入后台并且您正在玩游戏,那么您应该在服务中启动StartForeground(因此它获得优先权),并且当应用程序返回时,只需要stopForeground。
这样,即使用户与应用程序进行交互,您也始终避免使用前台服务。