JBM*_*JBM 8 stack android task android-activity
假设应用程序已经有一堆活动,然后使用FLAG_ACTIVITY_NEW_TASK从应用程序上下文启动一个新活动.这发生在同一个进程中,即在应用程序内部,如下所示:
AppContext -> A(FLAG_ACTIVITY_NEW_TASK) -> B -> C; AppContext -> D(FLAG_ACTIVITY_NEW_TASK)
Run Code Online (Sandbox Code Playgroud)
根据文档,我们现在有2个任务:
Task 1: A, B, C; Task 2: D
Run Code Online (Sandbox Code Playgroud)
从文档中可以看出,用户理论上可以独立地切换到活动C或活动D,因为它们属于不同的任务.然而,在实践中,我无法切换到活动C - 它总是切换到D.
我的问题是: 如果在与FLAG_ACTIVITY_NEW_TASK相同的过程中启动,任务是不是独立的,用户只能切换到最顶层任务中的最顶层活动?
如果答案是"否",那么用户切换到任务1的方式是什么?
答案是:否
任务是独立的,用户可以独立切换他们的活动,有效地将您的应用程序的两个活动放在堆栈顶部.在询问原始问题三年后,我刚刚找到了用例.
我们的应用程序将自己注册为URL方案的处理程序(如market://xxx.yyy/zzz).现在让我们想象一下,用户使用启动器启动了应用程序,进入某事物(活动A, B, C)的中间,然后离开了.然后在浏览器中,用户单击URL以启动我们的其他活动(活动D).这导致在同一时间有两个任务:活动A, B, C(C在顶部)和活动D.用户可以通过任务历史在这两个活动之间切换.
有趣的是,使用应用程序自己的图标在任务历史记录中可以看到活动C,但是使用浏览器的图标可以看到活动D. 无论如何,两者都可以切换到.
此外,这两个任务A-B-C,并D在同一个进程中运行.这意味着所有单重对象和静态数据都在它们之间共享.因此,如果不采取谨慎措施,他们可能会破坏彼此的状态.
在我遇到这个问题时,我发现这个问题已经有一段时间了,我觉得这个问题非常有用.它非常清楚地描述了所有标志和组合.
http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/
| 归档时间: |
|
| 查看次数: |
7041 次 |
| 最近记录: |