赞
踩
onCreate()
、onStart()
、onResume()
、onPause()
、onStop()
和 onDestroy()
。当 Activity 进入新状态时,系统会调用其中每个回调方法。您必须实现此回调,它会在系统首次创建 Activity 时触发。Activity 会在创建后进入“已创建”状态。在 onCreate() 方法中,您需执行基本应用启动逻辑,该逻辑在 Activity 的整个生命周期中只应发生一次。例如,onCreate() 的实现可能会将数据绑定到列表,将 Activity 与 ViewModel 相关联,并实例化某些类作用域变量。此方法会接收 savedInstanceState 参数,后者是包含 Activity 先前保存状态的 Bundle 对象。如果 Activity 此前未曾存在,Bundle 对象的值为 null。
如果您有一个生命周期感知型组件与您的 Activity 生命周期相关联,该组件将收到 ON_CREATE 事件。系统将调用带有 @OnLifecycleEvent 注释的方法,以使您的生命周期感知型组件可以执行已创建状态所需的任何设置代码
系统会在 Activity 开始与用户互动之前调用此回调。此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在 onResume() 方法中实现的。
onResume() 回调后面总是跟着 onPause() 回调。
当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause()。例如,当用户点按“返回”或“最近使用的应用”按钮时,就会出现此状态。当系统为您的 Activity 调用 onPause() 时,从技术上来说,这意味着您的 Activity 仍然部分可见,但大多数情况下,这表明用户正在离开该 Activity,该 Activity 很快将进入“已停止”或“已恢复”状态。
如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。例如,显示导航地图屏幕或播放媒体播放器的 Activity 就属于此类 Activity。即使此类 Activity 失去了焦点,用户仍希望其界面继续更新。
您不应使用 onPause() 来保存应用或用户数据、进行网络呼叫或执行数据库事务。有关保存数据的信息,请参阅保存和恢复 Activity 状态。
onPause() 执行完毕后,下一个回调为 onStop()或 onResume(),具体取决于 Activity 进入“已暂停”状态后发生的情况。
当处于“已停止”状态的 Activity 即将重启时,系统就会调用此回调。onRestart() 会从 Activity 停止时的状态恢复 Activity。
此回调后面总是跟着 onStart()。
基于Empty Activity
模板,创建安卓应用-LifeCycle
单击【Finish】按钮,完成项目初始化
activity_main.xml
strings.xml
文件里修改app_name
变量值,添加新变量test_life_cycle
在MainActivity
里定义标记常量AG
在onCreate和onDestroy回调方法里输出一条调试信息
在onStart和onStop回调方法里输出一条调试信息
在onResume和onPause回调方法里输出一条调试信息
package net.zwq.lifecycle; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { private final static String TAG = "life_cycle"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "onCreate invoked ."); } @Override protected void onStart(){ super.onStart(); Log.d(TAG, "onStart invoked ."); } @Override protected void onResume(){ super.onResume(); Log.d(TAG, "onResume invoked ."); } @Override protected void onPause(){ super.onPause(); Log.d(TAG, "onPause invoked ."); } @Override protected void onStop(){ super.onStop(); Log.d(TAG, "onStop invoked ."); } @Override protected void onRestart(){ super.onRestart(); Log.d(TAG, "onRestart invoked ."); } @Override protected void onDestroy(){ super.onDestroy(); Log.d(TAG, "onDestroy invoked ."); } }
life_cycle_filter
,日志标记为life_cycle
启动应用,查看LogCat里的消息(然后我们切换应用状态:前台 ⟹后台⟹前台⟹关闭)
单击【Home】键,返回手机应用桌面
此时,查看日志消息
单击【Overview】键,查看最近应用列表
最近打开的应用就是【生命周期】
单击在后台运行的【生命周期】应用,其窗口又重回前台,查看日志信息
应该按【Overview】键,选中【生命周期】应用向上滑动,即可关闭该应用
从日志信息可以看出三层架构
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。