Android Studio 笔记(二)------知识点

一、activity的生命周期

onCreate(),新建一个活动时调用该方法,并把当前活动放入返回栈的栈顶。

onStart(),活动从不可见到可见,出现页面。

onResume(),活动准备好进行交互了。

onPause(),表示当前不能进行交互,系统准备去启动活着恢复另一个活动时,总是先pause当前活动,再去看其他命令。(例如果出现dialog请求,也就是当前页面前悬浮一个小页面的对话框请求,当前页面暂停,不能进行交互,恢复后要回到onResume()方法)

onStop(),当前活动跳转别的活动,当前活动stop,恢复后回到onRestart()方法,再onStart向后推进。

onDestroy(),退出本活动时,活动销毁,出栈。

例:

MainActivity、NormalActivity、DialogActivity(对话型活动)

<activity
    android:name=".P2_DialogActivity"
    android:theme="@style/Theme.AppCompat.Dialog" />

1.点开主活动MainActivity

MainActivity:onCreate();onStart();onResume();

2.MainActivity跳转NormalActivity

MainActivity:onPause();onStop();

NormalActivity:onCreate();onStart();onResume();

3.NormalActivity返回MainActivity

NormalActivity:onPause();onStop();onDestroy();

MainActivity:onRestart();onStart();onResume();//back不用新建,沿着返回栈返回即可

4.MainActivity对话DialogActivity

MainActivity:onPause();

DialogActivity:onCreate();onStart();onResume();

5.DialogActivity退回MainActivity

DialogActivity:onPause();onStop();onDestroy();

MainActivity:onResume();

6.退出MainActivity

MainActivity:onPause();onStop();onDestroy();

 

二、activity活动启动模式

standard、singleTop、singleTask、singleInstance

属性在AndroidManifest.xml里修改

<activity
    android:name=".P2_LaunchTypeActivity"
    android:launchMode="singleTask"
    ></activity>

1.standard:

默认启动方式,离开本活动创建新活动时本活动入栈顶,新建时不会管栈里有没有本活动,都会新建活动。

例:

Button button_standard=(Button)findViewById(R.id.button_standard);
button_standard.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent standrad=new Intent(P2_LaunchTypeActivity.this,P2_LaunchTypeActivity.class);<!--访问当前活动-->
        startActivity(standrad);
    }
});

点击按钮三四下,还是一样的界面,还是这个活动,但要返回三四下才能彻底退出此活动,说明这里已经不是当时的页面了,而是新建了两三个界面。

注:这里与back跳到另一个会话再返回本活动不一样,intent与back机制不一样,back是直接沿用返回栈,栈顶活动出栈,下一个活动变当前活动,intent根据活动启动模式而看是新建还是去找栈里的某个活动。

2.singleTop:

如果返回栈的栈顶已经是该活动,则可以直接使用它,不用新建。

例:activity1请求activity1,不会新建,因为当前activity1已在栈顶;但如果activity1请求activity2,activity2再请求activity1,因为activity2在栈顶,所以会新建activity1。

3.singleTask:(最常用)

只要栈里任意位置有该活动,则直接使用,并且把它之上的所有其他活动都移出栈外。

例:activity1请求activity2,activity2再请求activity1,回到已有的activity1界面,activity2被destroyed。

4.singleInstance:

可以给该活动单独有一个返回栈,可以多个程序共享该返回栈,共同管理该活动。

不如此的话,本来是每个程序都有自己的返回栈,如果启动该活动,每个都要新建实例。

可通过getTaskId()来看所在栈是否为同一个。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值