美文网首页
Android启动模式——LaunchMode

Android启动模式——LaunchMode

作者: dhhuanghui | 来源:发表于2016-10-26 21:26 被阅读57次

    做Android好几年了,如果刚入行的时候问我Android的启动模式有几种,各有什么区别,可能我可以回答的很流利,但是现在发现连这个基础性的问题都开始淡忘了,因此这里特别的作个记录。
    Android的启动模式分四种:
    1、standard:标准模式,这是Android系统默认的模式,也就是每次启动一个Activity,都会创建一个新的实例,不管这个实例是否已经存在。这种模式应该很好理解。
    当我们使用Application的Context来启动一个Activity的时候,会报AndroidRuntimeException,因为standard模式下启动的Activity,会默认进入启动它的Activity的任务栈中,而非Activity类型的context却并没有所谓的任务栈,所以就会出现问题,解决这个问题的方法是需要为要启动的Activity指定标记位:FLAG_ACTIVITY_NEW_TASK,这个标记的作用是为启动的Activity创建一个新的任务栈。
    2、singleTop:栈顶复用模式。这个模式简单来说就是,如果当前要启动的Activity已经位于任务栈顶,则此Activity不会重新创建,他的onCreate、onStart方法不会被调用,这时候会回调的方法是onNewIntent,我们可以在这个方法中做一些初始化的操作。如果我们要启动的Activity没有位于栈顶,那么系统还是会为我们创建一个新的实例,这时候走的就是正常的Activity的生命周期。
    3、singleTask:单实例模式,也叫栈内复用模式。在这种模式下,整个任务栈中只能存在一个实例,尽管多次启动,也不会重复创建实例,同时也是onNewIntent方法被调用。除了standard,我平时用的比较多的就是singleTask了。这种模式有一个好处,就是它有clearTop的效果。比如当前栈中实例的顺序是ABCD,如果B是singleTask模式,这时候启动B,则系统会把B移到栈顶显示,同时销毁CD两个实例,只剩AB。
    4、singlnstance:单实例模式。它具有singleTsk模式的所有特性,同时加强了一点,就是这种模式的Activity只能单独的位于一个任务栈中。

    相关文章

      网友评论

          本文标题:Android启动模式——LaunchMode

          本文链接:https://www.haomeiwen.com/subject/kghjuttx.html