2

我有一个关于 Android 通知和活动顺序的问题。

我有以下情况:

我将 Activity_Main 作为我的第一个活动,它执行一些任务。当按下 BACK 按钮时,它会生成通知。Activity_Main 有以下调用 ( onKeyDown(), OnPause(), OnStop(), OnDestroy())。当用户单击通知图标时,Activity_Main 将启动并且调用顺序为 ( OnCreate(), OnResume())。这很好。

现在 Activity_Main 包含使用StartActivityForResult()api 启动 Activity_Second 并生成任务进度通知的按钮,函数调用为 ( onSaveInstance(), OnPause(), OnStop())。如果用户按 Activity_Second 上的返回按钮setResult(result),一切正常。但是,如果用户选择通知图标(activity_seconds 可见),那么 Activity_main ( onCreate(), OnResume()) 上的新实例就会启动。我想要的是 Activity_Second 应该关闭它并且onResume()应该调用(Activity_Main)。现在 Activity_Main(2nd instance), Activity_second, Activity_Main(1st instance) 在活动堆栈上。

我在生成通知时设置了以下标志。

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);

还有什么其他方法可以解决这个问题?

4

2 回答 2

1

在将这些标志添加到您的意图后尝试:

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
于 2011-09-13T10:01:44.763 回答
1

@ vineet,它没有帮助。

Intent notificationIntent = new Intent(this,Activity_Main.class);

<activity ....android:launchMode="singleTask" >

togather 帮助我解决了这个问题...... 来自这个链接

于 2011-09-14T10:12:52.297 回答