通常,如果我们在活动中最小化应用程序,那么它将处于暂停状态,因此当我们返回应用程序时,它应该从我们之前离开的同一个活动开始,以便活动将恢复。
但是我的应用程序(它基本上是一个简单的益智游戏)并不是这样的。如果我在游戏的任何阶段最小化,然后如果我回到游戏,它会从我的游戏的首页开始全新的游戏。最奇怪的是,如果我按下后退按钮,它会将之前最小化的活动调到前面。我调试我的代码,发现我的游戏上有一个倒计时器,这导致了这个问题。如果我删除倒计时,它会完美地工作,这意味着它从我离开的同一活动开始,如果游戏最小化,则永远不会开始新游戏。
在我的游戏中,我有两个活动,第一个活动只有一个“开始”按钮,第二个活动有倒计时器。因此,如果我最小化第二个活动并重新打开应用程序,那么全新的应用程序将启动,同时按回调出之前最小化的打开的应用程序。第二个活动代码是:
public class GameCore extends ActionBarActivity {
// COUNTDOWN VARIABLE
CountDownTimer countdown_timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
if (countdown_timer != null)
countdown_timer.cancel();
start_countDown(120000);
}
private void start_countDown(long millisInFuture) {
// TODO Auto-generated method stub
countdown_timer = new CountDownTimer(millisInFuture, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
}
}.start();
}
}
我不明白如果用户最小化游戏,为什么倒计时强制打开新游戏。任何人都可以给我一些倒计时的替代方法或解决方案吗?提前致谢。
在您的活动标记的清单文件中添加 android:noHistory="false" 标记。
<activity
android:name=".ui.MainActivity"
android:exported="true"
android:windowSoftInputMode="stateVisible|adjustResize"
android:noHistory="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>