2017-10-05 94 views
0

我试图设置intent.setFlags (FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK),但效果并不如我所想。如何开始完成A后的活动A活动

它会在旧的A活动中执行onResume()。

但我想要的效果如下图所示:

一个活动的onCreate()...的onPause()

任何地方(从通知,从B活性...)再次启动A活动

老A活性onDestory()

创建一个新的活动

+0

你有没有添加机器人:在AndroidManifest.xml launchMode = “singleTop” 为您的活动A.与更新通过重写onNewIntent() –

+0

你的看法又开始活动之前A,检查如果活动A存在,如果它现有完成()活动A然后开始新活动 – Yatish

+0

@JRamesh \t 它也在旧的A活动中执行onResume()。 –

回答

0

当您传递意图时使用(FLAG_ACTIVITY_CLEAR_TOP)标志。然后在startactivity()使用finish()方法。

+0

它执行onResume()活动也。 –

+0

然后如果我是正确的你想从活动b再次调用活动a但是与私有不同...尝试使用finish()方法从活动a到活动b Intent i = new Intent(Activity_1.this,Activity_2.class ); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);完(); –

+0

,因为我希望用户在点击历史记录时可以查看原始状态以启动A活动。但我有通知让用户点击它来启动一个活动(需要根据新的包进行初始化)。所以我想从任何地方开始A活动,如通知可以完成旧的活动。但我尝试了许多旗帜,无法满足我的需求。 –

0

你应该使用FLAG_ACTIVITY_CLEAR_TOP

如果设置,以及正在启动的活动在目前的任务已经运行,然后,而不是推出该活动的一个新的实例,都在上面的其他活动的它将被关闭,并且这个意图将作为新的意图被传送到(现在在顶部)旧活动。

样品编号

Intent i = new Intent(YourActivity.this, OTHERACTIVITY.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i);