透明主题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是一个吗。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Activity生命周期是指在其创建、启动、运行、暂停、停止和销毁过程中,系统会调用一系列的回调方法来通知应用程序。常见的生命周期方法包括: 1. onCreate():在Activity被创建时调用,用于进行初始化操作,如设置布局、绑定数据等。 2. onStart():在Activity即将可见但还未出现在前台时调用,此时Activity处于可见但不可交互的状态。 3. onResume():在Activity出现在前台并开始接收用户输入时调用,此时Activity处于活动状态。 4. onPause():在Activity失去焦点但仍可见时调用,通常用于保存数据或释放资源。 5. onStop():在Activity完全不可见时调用,可以用于释放资源或执行一些清理操作。 6. onDestroy():在Activity被销毁前调用,用于释放所有资源。 需要注意的是,弹出Dialog、Toast、PopupWindow等不会对Activity生命周期产生影响,因为它们是直接通过WindowManager.addView()显示的,而不是通过AMS通知应用进程调用的。但如果启动一个Theme为DialogActivity,则会按照A.onPause -> B.onCreate -> B.onStart -> B.onResume的顺序执行生命周期方法\[1\]。 了解Activity生命周期对于Android开发非常重要,可以帮助开发者更好地管理和优化应用程序的资源和用户体验\[2\]。在前台生存期内,Activity处于运行状态,可以与用户进行交互\[3\]。 #### 引用[.reference_title] - *1* [Activity生命周期(Activity弹出Dialog会触发Activity生命周期吗)](https://blog.csdn.net/u013620306/article/details/121130747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [什么是Activity生命周期](https://blog.csdn.net/weixin_46036815/article/details/124915894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值