博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2-AI--Activity启动方式
阅读量:6788 次
发布时间:2019-06-26

本文共 3946 字,大约阅读时间需要 13 分钟。

零、前言

standard:默认的启动模式    |---启动一个Activity,该Activity就会在返回栈中入栈    |---该Activity处于栈顶的位置    |---每次启动都会创建该Activity的新实例    singleTop:    |---在启动活动时若栈顶已经是该Activity,则认为可以直接使用它    singleTask:    |---整个应用程序的上下文中只存在一个实例    |---两次相同实例之间的Activity会被杀死singleInstance:    |---启用一个新的返回栈来管理这个活动

一、测试类

Activity1
public class Activity1 extends AppCompatActivity {    @BindView(R.id.btn_start_self)    Button mBtnStartSelf;    @BindView(R.id.button_start_others)    Button mButtonStartOthers;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.ac_task);        ButterKnife.bind(this);        Log.e("TASK_ID", "Activity1 Task id is " + getTaskId());    }    @OnClick({R.id.btn_start_self, R.id.button_start_others})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.btn_start_self:                startActivity(new Intent(Activity1.this, Activity1.class));                break;            case R.id.button_start_others:                startActivity(new Intent(Activity1.this, Activity2.class));                break;        }    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.e("TASK_ID", "Activity1 销毁");    }}
Activity2
public class Activity2 extends AppCompatActivity {    @BindView(R.id.btn_start_self)    Button mBtnStartSelf;    @BindView(R.id.button_start_others)    Button mButtonStartOthers;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.ac_task);        ButterKnife.bind(this);        Log.e("TASK_ID", "Activity2 Task id is " + getTaskId());    }    @OnClick({R.id.btn_start_self, R.id.button_start_others})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.btn_start_self:                startActivity(new Intent(Activity2.this, Activity2.class));                break;            case R.id.button_start_others:                startActivity(new Intent(Activity2.this, Activity1.class));                break;        }    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.e("TASK_ID", "Activity2 销毁");    }}
布局:ac_task.xml

三、测试结果分析:

1:standard模式:Activity1、2皆为standard
standard.gif
依次打开Activity1、2、2、1、2 E/TASK_ID: Activity1 Task id is 89 E/TASK_ID: Activity2 Task id is 89 E/TASK_ID: Activity2 Task id is 89 E/TASK_ID: Activity1 Task id is 89 E/TASK_ID: Activity2 Task id is 89依次返回 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁

standard .png
:2:singleTop模式:Activity1为standard, Activity2 为singleTop
singleTop.gif
依次打开Activity1、2、2、1、2E/TASK_ID: Activity1 Task id is 82E/TASK_ID: Activity2 Task id is 82E/TASK_ID: Activity1 Task id is 82E/TASK_ID: Activity1 Task id is 82依次返回E/TASK_ID: Activity1 销毁E/TASK_ID: Activity1 销毁E/TASK_ID: Activity2 销毁E/TASK_ID: Activity1 销毁

可见第二次打开Activity2时并无变化,因为singleTop模式,第二次的Activity2并没有创建

singleTop.png

:3:singleTask模式:Activity1为standard, Activity2 为singleTask
singleTask.gif
依次打开Activity1、2、2、1、2E/TASK_ID: Activity1 Task id is 94E/TASK_ID: Activity2 Task id is 94E/TASK_ID: Activity1 Task id is 94E/TASK_ID: Activity1 销毁依次返回E/TASK_ID: Activity2 销毁E/TASK_ID: Activity1 销毁

可见第二次打开Activity2时并无变化,第三次打开Activity2,Activity1销毁

singleTask.png
:4:singleInstance模式:Activity1为standard, Activity2 singleInstance
singleInstance.gif
依次打开Activity1、2、2、1、2 E/TASK_ID: Activity1 Task id is 115 E/TASK_ID: Activity2 Task id is 116 E/TASK_ID: Activity1 Task id is 115依次返回 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 E/TASK_ID: Activity1 销毁

可见Activity2单独在一个栈中,多次开启Activity2不会新建实例

singleInstance.png

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明

[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

3.联系我

QQ:1981462002

邮箱:
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
你可能感兴趣的文章
Xcode 6更新默认不支持armv7s架构
查看>>
python正则表达式替换函数中的回调函数
查看>>
用python 10min手写一个简易的实时内存监控系统
查看>>
oralce-MD5加密函数
查看>>
Linux下Redis的安装和使用
查看>>
NIO文章翻译
查看>>
html5对于文件的相关操作
查看>>
aerospike和amc安装部署
查看>>
Redis 面试知识点笔记(一)Redis简介
查看>>
thttpd嵌入式web开发笔记
查看>>
Vue.nextTick()
查看>>
分布式系统学习技术点二:Mycat篇二(进阶)
查看>>
python检测主机状态
查看>>
查看windows 中指定端口号
查看>>
centos6/centos7安装ffmpeg
查看>>
JDK环境变量配置
查看>>
第十章:单元测试代码
查看>>
arm9的流水线,还是没理解~~~~
查看>>
代码控制回到桌面
查看>>
linux 下 rar 解压
查看>>