我有3项活动: 主页(基础活动)
<activity
android:launchMode="singleTop"
android:name="com.Home"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
其他两项活动: Activity1和Activity2
主题为android:theme="@android:style/Theme.Translucent"
的可以从彼此或家里打电话。
他们总是回到家里onBackpress() 它是覆盖
intent.setClass(this, Home.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
从activity2
调用activity1时intent.setClass(this, ACtivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
它的onResume被调用但无法看到 有没有解决方案?
我只想在堆栈中使用单个Activity实例。
要求: 应该永远不应该销毁一次创建的Activity1和Activity2(它们应该始终从历史记录中调用),直到调用Home。
帮帮我。 在此先感谢。
答案 0 :(得分:2)
我认为问题出现是因为您正在使用FLAG_ACTIVITY_CLEAR_TOP进行家庭活动。
As,执行
如果已存在被调用活动类型的实例 堆栈,然后这个实例被带到前台而不是 创建一个新实例。此外,驻留的堆栈中的所有活动 在该实例的顶部从堆栈中清除。例如, 假设当前活动堆栈是ABCDE,启动一个 C类活动将清除任务中的活动D和E. 结果是堆栈ABC。
因此,当您调用Home Activity时,您的活动1和活动2将被清除。
解决方案:
使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED或FLAG_ACTIVITY_REORDER_TO_FRONT调用主页活动
AS,执行
除非意图创建新任务或带来,否则此标志无效 现有任务到前台。在这种情况下,任务被重置, 意味着应用任务亲和力(导致活动 从这个任务转移到这个任务)和那个 设置FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,任务是 根据该旗帜的规格清除。
答案 1 :(得分:0)
在你的清单中给出
android:launchMode="singleinstance";