透明主题activity和dialog对其他activity生命周期的影响

1 activity的生命周期简单说明

首先上官网图片:
在这里插入图片描述

//activity不同状态有不同的回调:
public class ExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //  activity 开始创建   ,利用setContentView设置视图
         }
    @Override
    protected void onStart() {
        super.onStart();
        //  activity 变得可见,用户可见之前调用
    }
    @Override
    protected void onResume() {
        super.onResume();
        //  activity 已经可见,此时activity处于 Activity 堆栈的顶层,并具有用户输入焦点
    }
    @Override
    protected void onPause() {
        super.onPause();
        // 当前activity的焦点被抢占    
       // 当系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行。这句话深层的意思就是,你可以在这里保存数据,但是时间不能过长否则会影响下一个activity的启动
        }
    @Override
    protected void onStop() {
        super.onStop();
        // activity已经不可见    
		//如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就可能发生这种情况。
}

	@Override
	protected void onRestart(){
    super.onRestart();
    //activity停止后再次启动,在 Activity 已停止并即将再次启动前调用。
//始终后接 onStart()
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
		//在 Activity 被销毁前调用。这是 Activity 将收到的最后调用。 当 Activity 结束(有人对 Activity 调用了 finish()),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。  
		//isFinishing() 检查是否activity的进程已经结束, 可能是因为你调用了 finish()或者其他情况. 通常被使用在onPause() 中去判断
    }
}

2 一些情况activity状态改变

启动activity
oncreate ⇒ onstart ⇒ onresume activity处于运行状态。

activity被覆盖一部分(类似dialog),然后activity全部显示
执行onPause,之后执行onResume

** Home键,隐藏之后重新显示**
onPause ⇒ onStop ⇒ 重新显示 ⇒ onRestart ⇒ onStart () ⇒ onResume

被其他activity覆盖,然后关闭其他activity
onPause ⇒ onStop ⇒ 重新显示 ⇒ onRestart ⇒ onStart () ⇒ onResume

用户退出activity
先调用onPause ⇒ onStop ⇒ onDestroy 退出

activity崩溃后重新启动
oncreate ⇒ onstart ⇒ onresume

3 一些情况分析

1 home键后再次回来onRestart执行吗
会执行onRestart方法。
执行onRestart()方法的场景:

  • home键,然后回来,
  • 打开其他activity然后回来
  • 切换其他应用,然后回来。

2 被dialog和透明主题Activity覆盖情况一样吗
都会只执行onPause,不会执行onStop,activity完全显示会执行onresume

3 一般在哪个函数保存数据:
onPause

4 如何把activity放后台
moveTaskToBack()方法:在activity中调用 moveTaskToBack (boolean nonRoot)方法即可将activity 退到后台
5 onNewIntent 调用时机,参数Intent和onCreate中getIntent是一个吗。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值