Kas*_*sra 7 android android-intent android-lifecycle android-activity
想象一下,您有以下一系列活动:
Activity A -> Activity B -> Activity C
Run Code Online (Sandbox Code Playgroud)
当您使用活动C时,按下本机后退按钮,将转到活动B.现在活动C的状态是什么?它还在内存中还是已经完成了?
如果它仍然在内存中,有没有办法恢复活动?除了启动此活动的另一个实例...
我应该补充一点,这是你不使用任何标志的标准情况,包括: FLAG_ACTIVITY_CLEAR_TOP
默认行为是当您按下硬件"后退"按钮时,当前活动将从后台堆栈中删除,并且将启动活动"破坏"序列.从那一刻起,你不应该依赖它可能在某个地方的事实 - 由Android来决定它何时实际上杀死了这个活动.
我之前的调查表明,onDestroy()只有当新活动完成加载并且闲置时才会调用受害者.
您可以android:launchMode="singleInstance"在Manifest中指定您的活动.这将确保当时只创建一个活动实例
您可能需要考虑阅读官方文档。
\n更具体地说,回答您问题的部分:
\n\n\n当用户按下“后退”按钮时,当前 Activity 将从堆栈顶部弹出(该 Activity 被销毁),并恢复上一个 Activity(恢复其 UI 的先前状态)。
\n
现在,对于你的第二个问题\xe2\x80\xa6,你可以继续阅读同一页\xe2\x80\xa6
\n\n\n当您启动一个活动时,您希望向前提供它的现有实例(而不是在返回堆栈顶部创建一个新实例)
\n
所以如果你读到 \xe2\x80\xa6 你会发现\xe2\x80\xa6
\n\n\n您可以使用 \nmanifest 元素中的属性以及传递给 \nstartActivity() 的意图中的标志来执行这些操作以及更多操作。
\n在这方面,您可以使用的主要属性是:
\ntaskAffinity\nlaunchMode\nallowTaskReparenting\nclearTaskOnLaunch\nalwaysRetainTaskState\nfinishOnTaskLaunch
\n您可以使用的主要意图标志是:
\nFLAG_ACTIVITY_NEW_TASK\nFLAG_ACTIVITY_CLEAR_TOP\nFLAG_ACTIVITY_SINGLE_TOP
\n
| 归档时间: |
|
| 查看次数: |
10707 次 |
| 最近记录: |