任务栈的概念在面试的时候 或者开发的时候遇到一些特殊问题 会用到 看了android的官方文档 他的解释是 任务栈的作用:记录存放用户开启的activity的。记录activity开启的先后顺序 所以 谷歌引入了任务栈的概念,帮助我们维护一个比较好的用户体验!
一个APP被开启系统就分配给它一个任务栈 当所有activity退出的时候,任务栈就被清空
任务栈的编号是一个integer 的数据类型 自增长的
一个APP 对应一个任务栈 任务栈的作用就是记录当前APP activity开启的先后顺序
栈的概念是先进后出 仔细分析一下android中几种activity的模式 模式的主要作用就是改变任务栈的顺序 次要作用是节约内存空间;
activity 启动模式
1:standard 默认标准启动模式 每次startActivity都是创建一个新的实例
2:singleTop 单一顶部 如果要开启的activity已经在顶部了 那就不会创建新的实例。而是会调用一个方法OnNewIntent
3:singleTask 单一任务栈 保证任务栈里面只有一个实例存在 如果激活的activity在任务栈里面已经存在 复用这个已经存在的activity
4:singleInstance 单一实例 整个手机操作系统只有一个实例存在 他会运行在自己单独的任务栈里 并且任务栈只有他一个实例存在 可以提供给别的APP 进行调用
配置方式
<activity android:launchMode="singleInstance" android:name="com.test.OtherActivity">
<intent-filter>
<action android:name="com.meifou.task"/>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
他人的APP 调用方式
Intent intent=new Intent();
intent.setAction("com.meifou.task");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
总结 任务栈其实就是一个链表LinkedList 当我们去开启一个activity的时候android框架就去遍历下整个任务栈 如果有就直接使用这个实例 并且调用下 onNewIntent 没的话 创建