[英]prevent task manager from recreating last displayed activity in a task
场景是:
启动应用程序,启动活动A,导航到B,然后转到C按主页按钮。 C被摧毁了。 打开任务管理器,按我的应用程序图标。 正在重新创建活动C. 我怎样才能停止这种行为? 我希望回到活动A.
我最接近的是通过使用Intent.FLAG_ACTIVITY_NO_HISTORY启动活动B,C。 但是这个标志的问题在于它阻止了活动B,C在应用程序的整个生命周期中被重新创建(一旦任务管理器将用户引导到A,它们就应该是可创建的)。
编辑:如果我使用这种方法,观察到与Intent.FLAG_ACTIVITY_NO_HISTORY情况相同的行为:
class C extends Activity
{
...
@Override
protected void onDestroy()
{
// last resort
finish();
super.onDestroy();
//finish();
}
}
一旦它的onDestroy()被调用一次,我无法导航回活动C :(
谢谢
经过一个人与机器周末之后,这就是我所经历的:
noHistory =“true”活动属性阻止它们从活动堆栈中位于它们下面的另一个活动启动(startActivity())。 事情就是整个活动导航逻辑通过一个方法传递这个标志到意图:
context.startActivity(intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
Android无法“重新排序到前面”一个'noHistory'活动,我把它当作一个bug。 由于noHistory活动已经完成(),它应该召唤一个新的实例......有效的是在活动A上使用FLAG_ACTIVITY_CLEAR_TOP(参见OP)。 这样,B和C在所有场景中都得到了适当的实例化。 但是,这还不够,我最终完成了所有活动,因为一方面是因为OOM错误而另外一方面是生命周期/应用程序逻辑并发症。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.