Activity生命周期

一、Activity声明周期

1、了解Activity声明周期

  • 当用户浏览、退出和返回到您的应用时,您应用中的 Activity 实例会在其生命周期的不同状态间转换。Activity 类会提供许多回调,这些回调会让 Activity 知晓某个状态已经更改:系统正在创建、停止或恢复某个 Activity,或者正在销毁该 Activity 所在的进程。
  • 在生命周期回调方法中,您可以声明用户离开和再次进入 Activity 时 Activity 的行为方式。例如,如果您正构建流媒体视频播放器,当用户切换至另一应用时,您可能要暂停视频或终止网络连接。当用户返回时,您可以重新连接网络并允许用户从同一位置继续播放视频。换言之,每个回调都支持您执行适合给定状态变更的特定作业。在合适的时间执行正确的作业,并妥善处理转换,这将提升应用的稳健性和性能。例如,良好的生命周期回调实现有助于防止应用出现以下问题:
    – 当用户在使用应用时接听来电,或切换至另一应用时崩溃。
    – 当用户未主动使用它时,消耗宝贵的系统资源。
    – 当用户离开应用并在稍后返回时,丢失用户的进度。
    – 当屏幕在横向和纵向之间旋转时,崩溃或丢失用户的进度。

2、Activity生命周期简化图

  • 为了在Activity生命周期各个阶段之间导航转换,Activity类提供六个核心回调方法:onCreate()onStart()onResume()onPause()onStop()onDestroy()。当 Activity 进入新状态时,系统会调用其中每个回调方法。

三、利用Log类输出信息

  • 在调试代码时,需要查看调试信息,就需要用安卓的android.util.Log类,它有5个常用方法。注意:不同打印方法使用时,都带上(String tag, String msg)参数,tag表示打印信息的标签,msg表示需要打印的信息。

1、Log.v()方法

  • 输出颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v(“”,“”);

2、Log.d()方法

  • 输出颜色是蓝色的,仅输出debug调试信息,但会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择。

3、Log.i()方法

  • 输出颜色为绿色,输出一般提示性消息,不会输出Log.v和Log.d的信息,但会显示i、w和e的信息。

4、Log.w()方法

  • 输出颜色为橙色,输出警告信息,一般需要我们注意优化安卓代码,同时选择它后还会输出Log.e的信息。

5、Log.e()方法

  • 输出颜色为红色,仅显示红色的错误信息,需要我们认真分析,查找出错原因。

四、回调方法案例演示

1、创建安卓应用

  • 基于Empty Activity模板
    在这里插入图片描述
  • 配置项目信息
    在这里插入图片描述
  • 单击【Finish】按钮,完成项目初始化
    在这里插入图片描述

2、主布局资源文件

  • 将约束布局改成线性布局,并设置标签控件相关属性
    在这里插入图片描述

3、字符串资源文件

  • strings.xml文件里修改app_name变量值,添加新变量test_life_cycle
    在这里插入图片描述

4、主界面类实现功能

  • MainActivity里定义标记常量TAG
    在这里插入图片描述
  • 在每个回调方法里输出一条调试信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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.");
}

}

5、添加消息过滤器

  • 为了更好地查看本应用的调试信息,需要添加消息过滤器。创建消息过滤器life_cycle_filter,日志标记为life_cycle
    在这里插入图片描述

6、启动应用,查看日志

  • 启动应用,查看LogCat里的消息
    在这里插入图片描述
  • 单击【Home】键,返回手机应用桌面
  • 此时,应用窗口被桌面遮住,查看日志消息
    在这里插入图片描述
  • 单击【Overview】键,查看最近应用列表
  • 最近打开的应用就是【生命周期】
  • 单击在后台运行的【生命周期】应用,其窗口又重回前台,查看日志信息
    在这里插入图片描述
  • 按【Back】按键,其实无法关闭【生命周期】应用
  • 应该按【Overview】键,选中【生命周期】应用向上滑动,即可关闭该应用
    在这里插入图片描述
  • 从日志信息可以看出三层架构

最外层(onCreate - onDestory)——(存在 - 不存在)
中间层(onStart - onStop)—— (可见 - 不可见)
最内层(onResume - onPause)—— (可交互 - 不可交互)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值