我有两项活动,活动A和活动B.
活动A开始活动B.
因此,一些交互后的活动堆栈看起来像A - > B - > A - >乙
问题: 我需要从活动B(堆栈中的最后一个B)开始堆栈中的第一个活动A.我正在使用FLAG_CLEAR_TOP以及Intent.FLAG_ACTIVITY_NEW_TASK来实现相同的目标。
现在,活动A(堆栈位置3)将显示在活动B中,但是当我按下后退按钮时,活动B将再次显示(因为活动B(堆栈位置2)已经存在于堆栈中)。
我如何克服这个问题?
PS:我尝试将launchMode singleInstance和singleTask用于活动A和B,但该解决方案对我的应用程序不起作用。
提前致谢。
答案 0 :(得分:0)
切换
等活动后添加finish ();
Intent intent = new Intent (activity_a.this, activity_b.class);
startActivity(intent);
finish ();
答案 1 :(得分:0)
尽可能避免创建多个活动实例。如果堆栈中有多个相同Activity
的实例,则Android不能用于识别(并返回)堆栈中Activity
的特定实例。
根据您的应用程序,有不同的方法可以解决问题。
可能对您有用的一种方法是使用<activity-alias>
,这允许您通过其他名称重用现有的Activity
实现。
另一种方法是创建另一个Activity
类,它只是继承自原始类,因此你有2个类具有完全相同的代码,但名称不同。
最好的方法是重新架构您的应用程序,以便在任何给定时间只有一个Activity
个实例存活。您可以使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
重新排列任务堆栈来完成此操作。