Android 在活动之间切换的意图将终止我的第二个活动
我的问题是: 我的应用程序中有多个活动,其中两个有点“特殊”。 活动A是一种家庭类型的活动,用于启动其他活动。它还保存一些其他信息,可以从后台更新(使用onNewIntent)。在舱单上我声明它是单顶的。它为结果启动其他活动,所以它不能是单个任务或实例(startActivityForResult不适用于它们)。 活动B是一个独立的活动,在某些事件上启动,也声明为singleTop。它还为result启动其他活动,并使用其onNewIntent。 我有两个单独的通知,它们链接到相应的活动。 我两者都用Android 在活动之间切换的意图将终止我的第二个活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我的问题是: 我的应用程序中有多个活动,其中两个有点“特殊”。 活动A是一种家庭类型的活动,用于启动其他活动。它还保存一些其他信息,可以从后台更新(使用onNewIntent)。在舱单上我声明它是单顶的。它为结果启动其他活动,所以它不能是单个任务或实例(startActivityForResult不适用于它们)。 活动B是一个独立的活动,在某些事件上启动,也声明为singleTop。它还为result启动其他活动,并使用其onNewIntent。 我有两个单独的通知,它们链接到相应的活动。 我两
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
正常流量为:
FLAG_ACTIVITY_REORDER_TO_FRONT | FLAG_ACTIVITY_SINGLE_TOP
及
启动B,但两者都不起作用。我的问题是,两个活动都在同一个任务上运行。尽管有文档标志“活动”和“新建”任务,但它不会在新任务中启动活动,而是将。您必须在特定活动的清单中使用android:taskafinity,并将其设置为唯一值。只有这样,它才会在新任务中启动。这样一来,用于A的FLAG\u ACTIVITY\u CLEAR\u TOP不会破坏B。您的实现是错误的,如果将某个活动的实例从后堆栈中删除,则不能保留该实例。您必须能够保存活动状态并在每次启动时重新创建其状态。我同意您的看法,但在这种情况下,这不是一个选项。对我来说,这是继承的代码,活动本身包含很多信息和状态(我知道这是不正确的,我已经尝试对它进行重构,并在一些管理器中移动大部分业务逻辑,但仍然存在很多),在这种情况下,我需要类似于单例活动的东西,但不使用单例实例数据是一种业务逻辑,只需将其移动到单例类即可。您正在攻击MVC模式。
FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACTIVITY_CLEAR_TOP