我有一个应用程序,它开始播放声音,并在onResume()方法中开始/恢复游戏,但我注意到的是,如果我的应用程序是最后一次运行的应用程序,当我将手机置于待机状态(屏幕关闭) ,我只需按菜单按钮查看时间,然后手机开始播放游戏并在后台发声(应用程序实际上看不到,只有带日期/时间的屏幕,但是onResume必须被调用在我的应用程序)。我该怎么办?有没有办法辨别什么是重新激活应用程序,然后添加条件语句只在应用程序实际可见时启动游戏?
这是我onResume的一个片段:
@Override
protected void onResume()
{
mySaveGame = Utilities.loadSavegame(this);
//check the savegame
if(mySaveGame!=null)
{
//start game using savegame values
this.startFromSavedGame(mySaveGame.getIsLevelComplete());
}
else
{
//run the 1st-run components
this.startFirstRun();
}
super.onResume();
}
我唯一想到的就是防止游戏在屏幕开启时启动(即使应用程序不可见),也就是将this.finish()作为onPause()的最后一行。 ..但是每次你想要回到它时都会强制你重启应用程序,因为进程本身被杀死了(这很好,因为我的onPause保存了持久数据,但它不是一个优雅的解决方案)。
请帮忙。
答案 0 :(得分:8)
您是否考虑过切换到onStart()
和onStop()
,而不是onResume()
和onPause()
?
答案 1 :(得分:4)
我遇到了同样的问题(我的音乐播放器恢复/暂停在onResume()/onPause()
),我找到的最佳解决方案是暂停和恢复活动,当它位于前景时你可以使用{ {3}}回调。
编辑:这是一个陈旧且略微不正确的答案 - Android开发者博客中描述了正确的答案:public void onWindowFocusChanged (boolean hasFocus)