3.1Android编程权威指南(第3版)————日志跟踪Activity生命周期

public class QuizActivity extends AppCompatActivity {
    private static final String TAG = "QuizActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
        Log.d(TAG, "onCreate(Bundle) called");
    }
    /**
    *注意,先是调用了超类的实现方法,然后才调用具体的日志记录方法。这些超类方
    法的调用不可或缺。从以上代码可以看出,在回调覆盖实现方法里,超类实现方法
    总在第一行调用。也就是说,应首先调用超类实现方法,然后再调用其他方法。使
    用@Override注解,就是要求编译器保证当前类拥有你要覆盖的方法。对于拼写错
    误的方法,比如onCreat()编译器会发出警告
    */
    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart called");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume called");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause called");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop called");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy called");
    }
}

打开App到按返回键的过程:
在这里插入图片描述
单击设备的后退键,相当于告诉Android系统:“activity已用完,现在不需要它了。”随即,系统就销毁了该activity的视图及其内存里的相关信息。这实际是Android系统节约使用设备有限资源的一种方式。

打开App到按Home键过程:
在这里插入图片描述
单击主屏幕键,相当于告诉Android系统:“我去别处看看,稍后可能回来。”此时,Android系统会先暂停,再停止当前activity。这表明,Activity实例已处于停止状态(在内存中,但不可见,不会活动在前台)。这样,Android系统就能快速响应,重启QuizActivity,回到用
户离开时的状态。(需要注意的是,停止的activity能够存在多久,谁也无法保证。系统需要回收内存时,它将首先销毁那些停止的activity。)
从后台进程回到前台进程,系统没有调用onCreate()方法(因为Activity实例还在内存里,而是调用了onStart()和onResume()方法。QuizActivity只需要重新启动,然后继续运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值