Android基础之activity的启动模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gao_blog/article/details/82052575

一、activity的启动模式有哪些

  • standard:标准模式,系统默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。在这个模式下,谁启动了Activity,那么这个Activity就运行在启动它的那个Activity所在栈中。

  • singleTop:栈顶复用模式。在这种模式下,如果新的Activity已经位于任务栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前的请求信息

  • singleTask:栈内复用模式。这是一种单例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动此Activity都不会创建实例,和singleTop是一样,系统也会调用onNewIntent。还有一点,就是singleTask有clearTop的效果,会导致栈内已有的Activity全部出栈。

  • singleInstance:单一实例模式。这是一种加强的singleTask模式,它除了具有singleTask的所有特性以外,还加强了一点,那就是具有此模式的Activity只能单独位于一个任务栈中,比如Activity A是singleInstance模式,当A启动后,系统会为它创建一个新的任务栈,然后A独自在这个新的任务栈中,由于栈内复用的特性,后续均不会创建新的Activity,除非这个独特的任务栈被系统销毁。整个手机操作系统里面只有一个实例存在。不同的应用去打开这个activity 共享公用的同一个activity。他会运行在自己单独,独立的任务栈里面,并且任务栈里面只有他一个实例存在。

二、使用场景

  • standard使用场景:邮件客户端,在新建一个邮件的时候,适合新建一个新的实例

  • singleTop使用场景:
    消息推送,通知栏弹出Notification,点击Notification跳转到指定Activity,使用singleTop避免生成重复的页面。
    登录的时候,登录成功跳转到主页,按下两次登录按钮,使用singleTask避免生成两个主页。
    从activity A启动了个service进行耗时操作,或者某种监听,这个时候你home键了,service收集到信息,要返回activityA。

  • singleTask使用场景:
    提供给第三方应用调用的页面,做浏览器、微博之类的应用,浏览器的主界面等等。
    程序的主界面,进入多层嵌套之后,一键退回,之前打开的Activity全部出栈。

  • singleInstance使用场景:
    呼叫来电界面,打电话、发短信功能。
    闹铃提醒,将闹铃提醒与闹铃设置分离。

猜你喜欢

转载自blog.csdn.net/gao_blog/article/details/82052575
今日推荐