Activity简介
每个Activity与其他Activity之间只存在松散的关联,应用内不同Activity之间的依赖关系通常很小。
android:name时清单文件声明Activity时唯一必要的元素。
不想让其他应用访问的Activity不应包含intent过滤器。
了解Activity生命周期
良好的生命周期回调实现有助于防止应用出现以下问题:1、当用户在使用引用时接听来电,或切换至另一应用时崩溃;2、当用户未主动使用它时,消耗宝贵的系统资源;3、当用户离开应用并在稍后返回时,丢失用户的进度;4、当屏幕在横向和纵向之间旋转时,崩溃或者丢失用户的进度。
onCreate():系统首次创建Activity时出发接收saveInstanceState参数,包含Activity先前保存状态的Bundle对象,如果Activity之前未存在,Bundle对象为null.
onStart()
onResume():
onPasue():执行非常简单而且不一定有足够的时间来执行保存操作,因此不应该使用onPause()来保存应用或者用户数据、进行网络呼叫或者执行数据库数据。在API24以上,有多个应用在多窗口模式下运行,无论何时,都只有一个应用(窗口)可以拥有焦点,因此系统会暂停所有其他应用。有新的半透明Activity(例如对话框)处于开启状态,只要Activity仍然部分可见但并未处于焦点之中,它便会一直暂停。
onStop()
onDestroy():Activity即将结束(用户彻底关闭Activity或者由于系统为Activity调用finish),或者由于配置变更(例如设备旋转或者多窗口模式),系统暂时销毁Activity。可以用isFinishing()方法区分这两种情况。
Activity部分销毁,仍然驻留在内存中,并且可以返回到前台(切换到另一应用时)
系统终止进程优先级:空(已销毁)>后台(不可见,已停止)>后台(失去焦点,已暂停)>前台(拥有或即将获得焦点,已创建、已开始、已恢复)
系统永远不会直接终止Activity以释放内存,而是会终止Activity所在的进程。不仅会销毁Activity,还会销毁在该进程中运行的所有其他内容。
当Activity因系统限制而被销毁时,应组合使用ViewModel、onSaveInstanceState()和/或本地存储来保留用户的瞬间界面状态。
onSaveInstanceState() onRestoreInstanceState()
startActivity() startActivityForResult
Activity A启动Activity B顺序:A.onPause(),->B.onCreate()->B.onStart()->B.onResume()->A.onStop()