我对Android通知和活动顺序有疑问。
我有以下情况:
我将Activity_Main作为我的第一个活动,执行一些任务。按下BACK按钮时会生成通知。 Activity_Main有以下来电(onKeyDown()
,OnPause()
,OnStop()
,OnDestroy()
)。当用户单击通知图标时,Activity_Main已启动且调用顺序为(OnCreate()
,OnResume()
)。哪个没问题。
现在,Activity_Main包含使用StartActivityForResult()
api启动Activity_Second的按钮,还会生成任务进度通知,函数调用为(onSaveInstance()
,OnPause()
,OnStop()
)。如果用户在setResult(result)
上按下Activity_Second上的按钮,一切正常。但是,如果用户选择“通知”图标(activity_seconds可见),则会启动Activity_main(onCreate()
,OnResume()
)上的新实例。我想要的是Activity_Second应该关闭它并且应该调用(onResume()
的Activity_Main)。现在Activity_Main(第二个实例),Activity_second,Activity_Main(第一个实例)在活动堆栈上。
我在生成通知时设置了以下标志。
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
解决这个问题的其他方法是什么?
答案 0 :(得分:1)
在将这些标志添加到您的意图后尝试:
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
答案 1 :(得分:1)
@ vineet,它没有帮助。
Intent notificationIntent = new Intent(this,Activity_Main.class);
和
<activity ....android:launchMode="singleTask" >
一起帮我解决了这个问题...... from this link