1

我正在使用 Intent.FLAG_ACTIVITY_NEW_TASK 标志从广播接收器启动活动。

我的活动在其 onCreate 方法中启动了一个 CountDownTimer。按一个键会杀死我的应用程序(我正在调用finish()),但我的应用程序出现在任务管理器中。

如果我打开任务管理器并单击我的应用程序,则会再次调用 onCreate 方法并调用我的计时器的另一个实例。

如何防止这种行为?

谢谢,阿维

4

2 回答 2

1

在您的清单文件中放入launchMode标签<activity>

如果您选择singleTask,否则singleInstance您将不会拥有应用程序的多个实例。

例子:

<activity android:name=".MyFirstActivity" android:launchMode="singleTask" />

尝试使用它,它可能会解决您的问题。更多信息可以在这里找到

于 2013-09-08T17:21:58.503 回答
1

您的应用程序中可能有类似下面的代码来启动倒数计时器。

new CountDownTimer(30000, 1000) {

 public void onTick(long millisUntilFinished) {
     mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
 }

 public void onFinish() {
     mTextField.setText("done!");
 }
}.start();

您可以围绕它包装一个 if 语句,以查看倒计时是否已开始,是否已将布尔值设置为 true,如果未将其设置为 false(因为计时器已停止)。

    if(countDownStarted == false)
    {
        new CountDownTimer(30000, 1000) 
        {
            public void onTick(long millisUntilFinished) 
            {
                mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
                countDownStarted = true;
            }

            public void onFinish() 
            {
                mTextField.setText("done!");
                countDownStarted = false;
            }
        }.start();
    }
于 2013-09-08T17:53:25.857 回答