Android-界面组件(Activity)的运行模式singleTask和singleInstance是如何实现的?二者之间有何区别??

发布于 2016-10-28 17:47:48 字数 149 浏览 1300 评论 1

界面组件的运行模式有四种:standard,singleTop,singleTask,singleInstance,前面的二者容易理解,比如:standard模式就是一个接一个界面组件的地调用,singleTop的话可以复用某些界面组件,但是后面二者比较难理解,希望大神帮解答一下。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜柠檬 2017-04-02 14:22:23

standard
这个是android的Activity的默认模式,如果没有配置android:launchMode ,则默认这个模式。该模式下,一个Activity可以同时被添加到多个task中,且一个task可以有多个实例,且每次通过intent启动时,都会生成一个新的实例。
无特殊情况都是用这种模式。

singleTop
该属性和standard较类似,不同的地方就是,当当前Activity的实例在当前task的栈顶时,intent启动时,则不生成新的实例,会重用(不生成新的实例)原有的实例。如果你显式指定intent的参数FLAG_ACTIVITY_NEW_TASK。如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的task里。
场景就是在比如点击一个界面多点了几下,有可能会在该栈顶创建多个实例,这时候用singleTop保证只创建一个实例。

singleTask
该模式下,Activity只会有一个实例。如果某一个task中已有该Activity的一个实例存在,则不再启动新的,每次都会被重用(重用就是如果该Activity在task的栈底,则会被调到栈顶),且可以和其他的Activity共存于一个task中。

singleInstance
该模式和singleTask一样,唯一不同的就是,该模式下,Activity会独自拥有一个task,不会和其他Activity公用,每次Activity都会被重用,且全局只能有一个实例。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文