Activity生命周期与启动模式

 目录

Activity类提供六个核心回调方法:

(1)Activity存在与否

(2)Activity可见与否

Activity可交互与否

 Activity生命周期回调方法

回调方法案例演示

创建安卓应用【LifeCycle】修改主布局文件activity_main.xml

修改主界面MainActivity

添加消息过滤器

单击模拟器上的【Home】键 

 单击【查看最近应用】按钮

 三层架构

利用Log类输出信息


Activity类提供六个核心回调方法:

onCreate()onStart()onResume()onPause()onStop() 和 onDestroy()

(1)Activity存在与否

Activity整个生命周期从onCreate()方法开始,到最终调用onDestroy()方法结束。对于Activity的全局资源在onCreate()方法中设置,最终在onDestroy()方法中进行资源回收。

(2)Activity可见与否

Activity触发onStart()方法后处于可见状态,但未必能与用户进行交互。当Activity完全不可见时,触发onStop()方法。重新可见时,先触发onRestart()方法,再触发onStart()方法。onStart()方法和onStop()方法可以被多次调用。

Activity可交互与否

Activity在onResume()方法和onPause()方法之间时处于活动状态,此时可以与用户进行交互。

安卓进程优先级

 Activity生命周期回调方法

1、onCreate()回调方法
系统首次创建 Activity 时触发,同时还以Bundle形式存储以前的状态。

2、onRestart()回调方法
重新启动Activity调用,该Activity在堆栈中,而不是创建一个新Activity。

3、onStart()回调方法
当 Activity 进入“已开始”状态时,系统会调用此回调。调用onStart()方法使Activity对用户可见,因为应用会为 Activity 进入前台并支持互动做准备。

4、onResume()回调方法
Activity 会在进入“已恢复”状态时来到前台,然后系统调用 onResume() 回调。这是应用与用户互动的状态。应用会一直保持这种状态,直到某些事件发生,让焦点远离应用。

5、onPause()回调方法
Activity被暂停。该方法是用来保存活动状态的地方,以便Activity被重新启动时具有与其退出相同的状态。

6、onStop()回调方法
当Activity不再对用户可见,说明其已进入“已停止”状态,因此系统将调用onStop()回调。

7、onDestroy()回调方法
销毁Ativity之前,系统会先调用onDestroy()。onDestroy()回调应释放先前的回调(例如onStop())尚未释放的所有资源。
原文链接:https://blog.csdn.net/howard2005/article/details/108601171

回调方法案例演示

创建安卓应用【LifeCycle】修改主布局文件activity_main.xml

修改主界面MainActivity

定义标记常量TAG

 在每个回调方法里输出一条调试信息

具体代码:

package net.zyt.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,"onStart invoked");
    }

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

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

添加消息过滤器

为了更好地查看本应用的调试信息,需要添加消息过滤器

 

 启动应用,查看LogCat里的消息

单击模拟器上的【Home】键 

 

此时,应用窗口被桌面遮住,查看LogCat里的消息 

 

 单击【查看最近应用】按钮

 

 单击在后台运行的【LifeCycle】应用,其窗口又重回前台,查看LogCat里的信息

 

单击在后台运行的【LifeCycle】应用,其窗口又重回前台,查看LogCat里的信息 

 

 三层架构

最外层(onCreate - onDestory)——(存在 - 不存在)

中间层(onStart - onStop)—— (可见 - 不可见)

最内层(onResume - onPause)—— (可交互 - 不可交互)

利用Log类输出信息

在调试代码时,需要查看调试信息,就需要用安卓的android.util.Log类,它有5个常用方法:

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()
输出颜色为红色,仅显示红色的错误信息,需要我们认真分析,查找出错原因。

注意:不同打印方法使用时,都带上(String tag, String msg)参数,tag表示打印信息的标签,msg表示需要打印的信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值