我正在使用 Intent.FLAG_ACTIVITY_NEW_TASK 标志从广播接收器启动活动。
我的活动在其 onCreate 方法中启动了一个 CountDownTimer。按一个键会杀死我的应用程序(我正在调用finish()),但我的应用程序出现在任务管理器中。
如果我打开任务管理器并单击我的应用程序,则会再次调用 onCreate 方法并调用我的计时器的另一个实例。
如何防止这种行为?
谢谢,阿维
我正在使用 Intent.FLAG_ACTIVITY_NEW_TASK 标志从广播接收器启动活动。
我的活动在其 onCreate 方法中启动了一个 CountDownTimer。按一个键会杀死我的应用程序(我正在调用finish()),但我的应用程序出现在任务管理器中。
如果我打开任务管理器并单击我的应用程序,则会再次调用 onCreate 方法并调用我的计时器的另一个实例。
如何防止这种行为?
谢谢,阿维
在您的清单文件中放入launchMode
标签<activity>
。
如果您选择singleTask
,否则singleInstance
您将不会拥有应用程序的多个实例。
例子:
<activity android:name=".MyFirstActivity" android:launchMode="singleTask" />
尝试使用它,它可能会解决您的问题。更多信息可以在这里找到
您的应用程序中可能有类似下面的代码来启动倒数计时器。
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();
}