做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只能单独的位于一个任务栈中。

更多相关文章

  1. Android(安卓)Wifi模块分析(三)
  2. Android系统配置数据库注释(settings.db)
  3. android用户界面之按钮(Button)教程实例汇
  4. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  5. Android(安卓)Activity的启动
  6. Android(安卓)任务和回退堆栈---启动任务
  7. Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
  8. Android——Activity四种启动模式
  9. 修复Android(安卓)App在开机后入口类被启动两次的bug

随机推荐

  1. 为什么我使用此Linq to Sql方法获得Inval
  2. PB中动态SQL处理BLOB的方式
  3. mysql-5.7.21-winx64.zip 下载安装(Win10)
  4. 网站速度慢及其解决方法
  5. 在Delete From语句中带有别名的表变量。
  6. SQL查出比经理薪水还高的员工信息:
  7. SQL Server 自动增长清零
  8. php添加pdo_mysql扩展
  9. NoSQL_Cassandra_导出数据库结构/数据库
  10. SQL服务器数据部分的年和月