cn1*_*n1h 29 android launchmode android-activity
我在网上阅读了android开发者指南和一些文章,我仍然对此感到困惑singleTask launchmode.让我们举一个例子:
用户启动App1,android启动一项新任务.假设App1按以下顺序创建活动:
ActivityA -> ActivityB -> ActivityC
Run Code Online (Sandbox Code Playgroud)
这就是task1的样子.
然后用户点击home buttom并选择启动App2,这样task1进入后台并且android启动一个新任务:task2,用户执行的操作:
ActivityD -> ActivityE
Run Code Online (Sandbox Code Playgroud)
现在让我们说ActivityE尝试启动ActivityB,并ActivityB拥有launchmode singleTask.
我的理解是task1再次来到前端,task2进入后台.而task1现在看起来像这样:
ActivityA -> ActivityB
Run Code Online (Sandbox Code Playgroud)
意思是:
在ActivityC将从任务1被移除并ActivityB变得顶端活动.
如果用户现在点击"返回"按钮,他将来到ActivityAtask1而不是返回ActivityEtask2
我对吗?
谢谢
Blu*_*ell 20
你说得对.
你为什么不测试它.
还有这个应用程序,可以帮助解释启动模式:
https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

来源位于https://github.com/gnorsilva/Activities-LaunchMode-demo
ActivityC将从task1中删除,ActivityB将变为top活动.
是的,你是对的...
ActivityC将被删除,即将调用ActivityC的onDestroy方法.因此,当用户再次启动任务1时,将显示ActivityB而不是ActivityC.
创建了2个任务(项目)并上传了相同的@SendSpace.试试看...
如果你看一下它所说的机器人文件
"一个"singleTask"活动允许其他活动成为其任务的一部分.它始终是其任务的根源,但其他活动(必然是"标准"和"单一活动")可以启动到该任务中."
这意味着当您单击主页按钮时,单个任务活动(在您的情况下为ActivityB)上方的所有活动都将从堆栈中删除.
在示例应用程序的我给你前面,如果你只是运行项目"AndroidTest",然后单击日志中的home键,你可以看到,第二个活动放在暂停,当你从"最近的应用程序的"再次启动它列出第二个活动被销毁.
在Senario中,单个实例活动上方的Activity(ActivityB)未从Back Stack中移除,而另一个应用程序请求此Activity(ActivityB),它可能不会显示,并且可能会删除intent.但这极少发生的可能性因为用户必须先按Home键,然后按BackStack中的当前Task\App才能导航到另一个Task\App.
因此警告
其他模式 - singleTask和singleInstance - 不适合大多数应用程序,因为它们会导致用户可能不熟悉的交互模型,并且与大多数其他应用程序非常不同.
我希望这能解决你的疑虑.
| 归档时间: |
|
| 查看次数: |
28176 次 |
| 最近记录: |