前几天有同学说到android中的四种启动模式,然后看了一下,做了一下总结:

四种启动模式分别是 standard singleTop singleTask singleInstance.

其实在程序中有一个应用栈,用来保存Activity,比如Activity1 ----->Activity2----->Activity3 ,他们在栈里的保存形式如下:

android中的四种启动模式_第1张图片

下面呢,就分别说一下这四种启动模式:

stardard: 默认的启动模式,每调用一次创建一个实例放入任务栈中。例如,现在已经有Activity1、Activity2两个实例,再次调用Activity2,其应用栈变化过程如下:

android中的四种启动模式_第2张图片

singleTop: 要调用的 Activity 位于当前栈的栈顶,则不会创建新的实例,调用 onNewIntent() 方法。

否则,创建新的实例,并放在栈顶。即允许多个实例,但是不允许相同的 Activity 重叠。下面是具体的应用栈的变化:

android中的四种启动模式_第3张图片android中的四种启动模式_第4张图片

(调用的位于栈顶) (调用的未位于栈顶,注意这里调用的Activity1 )

singleTask:

如果要激活的Activity在应用栈里已经有了,将重用该Activity,即调用onNewIntent() 方法。在应用栈中则将该Activity放在栈顶,因此该Activity之前的Activity全部从应 用栈弹出。

如果没有,则创建该Activity的新实例。即只允许有一个实例。

android中的四种启动模式_第5张图片

singleInstance: 只有一个实例。如果应用1的栈中创建了MainActivity实例,如果应用2的栈中也要激活MainActivity,则不需要创建,两应用共享该Acitvity的实例。

android中的四种启动模式_第6张图片


其次,再给大家说一下Activity启动模式设置:

 <activity android:name=".MainActivity" android:launchMode="standard" />自我感觉对singleInstance的理解还不是很到位,如果有不足之处,请多多指教。





更多相关文章

  1. 安卓 WebView加载本地图片时居中显示
  2. 基于Service与ContentProvider的音乐播放实例
  3. Android实现图片轮播切换
  4. Android:使用ViewPager实现左右滑动切换图片(图上有点点)
  5. Android中使用putExtra()传递对象实例
  6. android 自动生成ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi图片
  7. android创建aidl小实例
  8. Android 需要使用不同实例的情况

随机推荐

  1. Android实现局部图片滑动指引效果
  2. android 获取服务器文件流 hander
  3. Android底部导航栏
  4. Android(安卓)Activity生命週期简介
  5. Android学习博客和文章存档
  6. Android:启动页有短暂白屏的解决方法
  7. 管道的私用,删除android的流氓
  8. android 修改videoview的宽度和高度
  9. Consider adding android:paddingStart=
  10. Android开发资料视频教程(光盘6.2G)