保留使用alwaysRetainTaskState和lauchMode Android应用程序状态
-
20-09-2019 - |
题
在我的Android应用,我有用作入口点我的应用程序,这是在我的清单文件配置这样的主要活动:
<activity android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:alwaysRetainTaskState="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
因此,对于特定用途的情况下,可以说,用户通过点击应用程序启动器中的图标启动从主屏幕上的应用程序。启动应用程序后,用户从中活性的主要活动导航,最后到活动B.此时,用户决定以检查他们的Facebook,让他们点击home键把我的应用程序在后台运行,并启动Facebook的应用程序。
检查他们的Facebook后,用户想要返回到我的应用程序,所以他们按Home键,并启动从应用程序启动器(就像他们做的第一时间就推出)的应用程序。
当用户返回到我的应用程序,我希望应用程序返回到最后一个活动的用户是当应用程序投入的背景下,在这种情况下是活动B.在manifest文件中的,我已经设置alwaysRetainTaskState = TRUE,以确保OS不杀我的应用程序的活动。
现在我的问题:我怎么得到我上述的行为?每当我点击我的应用程序的图标,它总是起始于主要的活动,不管是什么。我想,这是因为category.LAUNCHER属性。我曾尝试安卓launchMode = singleTask,但还没有做出区别;它总是起始于主
如果有人可以明确的意图过滤器,发射模式和任务,这将是伟大的!
解决方案
我通过将筛管DispatcherActivity
并使其默认的(通过使用非常相同的意图过滤器)解决了这个。在其onCreate
方法创建并调用基于一些合理的默认的意图(您例如主要活动)或基于一些保存令牌识别哪些活动应该被启动。该令牌保存/刷新你想在重启调用任何活动的onStop
方法。您可以将此令牌保存到首选项。
这里的理性的是,最后的活性,这是可见的将执行的onStop方法时中断。
谨慎的字在这里:我没有实现这种模式,它运作良好。但是似乎无法与历史发挥太好了,最后我就放弃了和猛拉出来的代码。没有人到目前为止抱怨。
其他提示
仅供参考singleTask
是不是你想要的,因为它开始一个新的任务:
http://developer.android.com/guide/主题/清单/活性-element.html#LMODE
你是如何开展活动B?任何非标准起动模式或意图标志?
有关的人来到这里有类似问题,我发现了一些奇怪的事情,可能是你所看到的......也许。
说我有一个活动的应用程序 - “乙 - ”ç等,我在和我的应用程序总是“恢复”至A,如果它是从应用程序列表又名发射装置发射的问题。从“不满”恢复屏幕(长按家)将表现出正确的简历行为虽然(恢复到B或C的预期)。我的清单是没有什么特别的,我有alwaysRetainTaskState =“真”在我的根活动设置,并启动模式为默认(标准)。
我是通过网站加载APK到我的电话即可。下载和安装,请之后,我会按“打开” 即可启动应用程序的时候了。出于某种原因(卸载该应用后)我累了再下载,安装,但后来我的按“完成”按钮,而不是。然后从启动启动应用程序/“所有应用程序”列表中有相同的简历的行为,从最近用过恢复 - 换句话说,正在以某种方式引起了我的问题,因为在安装过程的点击,而不是“做”“打开”时。 p>
我核实API10这个 “解决方案”(2.3.5)和API15(4.0.4)