Activity生命周期

Activity 四个状态

应用程序中,每个 Activity 的活动状态会随着运行状态而发生变化,都有可能从活动状态转变为非活动状态,从非活动状态转变成活动状态。总结起来,一个 Activity 会有四种状态:

  • 活动状态
    Activity 位于前台,用户可见,可以获得焦点。处于活动状态的Activity 在系统中的优先级最高,最不容易被系统回收。

  • 暂停状态
    Activity 不再处于前台了,但是仍然对用户可见,不能获得焦点。处于暂停状态的Activity 在系统中也有着较高的优先级,不容易被系统回收,只有在内存极度缺乏的时候系统才会回收它。

  • 停止状态
    Activity 不可见了,无法获得焦点。处于停止状态的 Activity,系统会保存其成员变量和状态,但在内存缺乏时,该 Activity 会被系统回收。

  • 销毁状态
    Activity 结束,或者该 Activity所在的进程被结束,系统优先回收此状态的 Activity

Activity生命周期和回调方法

life

Activity生命周期中如下方法会被调用到:

  • onCreate()
    Activity 创建时被回调的函数,在这个函数中应该完成初始化操作,比如布局加载。

  • onStart()
    Activity 启动时被调用,此时Activity 转变成用户可见状态。

  • onRestart()
    Activity 重新启动时被调用,由停止状态转变为运行状态前调用。

  • onResume()
    Activity 恢复,Activity 处于运行状态,准备好了与用户交互。

  • onPause()
    Activity 被暂停时调用,此函数在系统启动/恢复另一个Activity 时调用。

  • onStop()
    Activity 停止,Activity 处于完全不可见状态。

  • onDestroy()
    Activity 销毁前被调用。

代码实例

我们在项目 ActivitySample 中创建一个Activity 名为 LifeActivity 并配置.
在这里插入图片描述

Java 代码

public class LifeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_life);
        Log.i("LifeActivity", "onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("LifeActivity", "onStart");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("LifeActivity", "onRestart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("LifeActivity", "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("LifeActivity", "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("LifeActivity", "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("LifeActivity", "onDestroy");
    }
}

Kotlin 代码

class LifeActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_life)
        Log.i("LifeActivity", "onCreate")
    }

    override fun onStart() {
        super.onStart()
        Log.i("LifeActivity", "onStart")
    }

    override fun onRestart() {
        super.onRestart()
        Log.i("LifeActivity", "onRestart")
    }

    override fun onResume() {
        super.onResume()
        Log.i("LifeActivity", "onResume")
    }

    override fun onPause() {
        super.onPause()
        Log.i("LifeActivity", "onPause")
    }

    override fun onStop() {
        super.onStop()
        Log.i("LifeActivity", "onStop")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.i("LifeActivity", "onDestroy")
    }
}

这里时针对 LifeActivity 的生命周期的回调方法通过打印日志来记录。

启动 LifeActivity

编辑布局文件 activity_my1.xml,增加一个idlifeBtn的按钮;
编辑 MyActivity1代码,为新增的按钮设置点击事件,点击idlifeBtn的按钮启动LifeActivity

Java 代码 MyActivity1

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my1);

        ......

        Button life = findViewById(R.id.lifeBtn);
        life.setOnClickListener(view -> {
            Intent intent = new Intent(this, LifeActivity.class);
            startActivity(intent);
        });
    }

Kotlin 代码 MyActivity1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my1)

        ......

        val life: Button = findViewById(R.id.lifeBtn)
        life.setOnClickListener{
            val intent = Intent(this, LifeActivity::class.java)
            startActivity(intent)
        }
    }

MyActivity1的界面效果:
m1

运行程序,点击新添加的按钮,页面跳转至 LifeActivity
点击系统返回键;然后查看日志:
log

项目代码地址

  • Java:
    https://github.com/BethelDEV/shaguaAndroid/tree/main/javaSource/ActivitySample

  • Kotlin:
    https://github.com/BethelDEV/shaguaAndroid/tree/main/kotlinSource/ActivitySample

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值