android中的activity详解

本文详细解析了Android中Activity的生命周期,包括启动、退居后台、返回前台等不同场景下的变化过程。特别关注了锁定屏幕与解锁屏幕对Activity的影响,以及如何在内存不足时处理Activity的状态保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

activity生命周期图解

activity生命周期图示详解

锁定屏与解锁屏幕 只会调用onPause(),而不会调用onStop方法,开屏后则调用onResume()。在实际操作中会有所出入,比如在三星手机测试的时候锁定手机调用了onPause()和onStop()方法,解锁时候调用的是:onRestart(),onStart()和 onResume()方法。

介绍不同场景下Activity生命周期的变化过程

启动Activity:

onCreate()—>onStart()—>onResume(),Activity进入运行状态。

Activity退居后台:

当前Activity转到新的Activity界面或按Home键回到主屏: onPause()—>onStop(),进入停滞状态。

Activity返回前台: onRestart()—>onStart()—>onResume(),再次回到运行状态。

Activity退居后台,且系统内存不足,

系统会杀死这个后台状态的Activity,若再次回到这个Activity,则会走onCreate()–>onStart()—>onResume()

锁定屏与解锁屏幕

只会调用onPause(),而不会调用onStop方法,开屏后则调用onResume()

Activity销毁但Task如果没有销毁掉,当Activity重启时这个AsyncTask该如何解决?

比如屏幕旋转这个例子,在重建Activity的时候,会回调

Activity.onRetainNonConfigurationInstance()
重新传递一个新的对象给AsyncTask,完成引用的更新

若Activity已经销毁,此时AsynTask执行完并返回结果,会报异常么?

当一个App旋转时,整个Activity会被销毁和重建。

当Activity重启时,AsyncTask中对该Activity的引用是无效的,因此onPostExecute()就不会起作用

若AsynTask正在执行,折会报 view not attached to window manager 异常

同样也是生命周期的问题,在 Activity 的onDestory()方法中调用Asyntask.cancal方法,让二者的生命周期同步

内存不足时,系统会杀死后台的Activity,如果需要进行一些临时状态的保存,在哪个方法进行

Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。
当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity,onSaveInstanceState() 会被调用。

但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。除非该activity是被用户主动销毁的

通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值