Activity的生命周期

Activity生命周期的demo

/**
 * Activity生命周期的demo
 * 一般执行顺序,从创建到销毁
 *      onCreate->onStart->onResume->onPause->onStop->onDestroy
 * 重新打开activity
 *      onRestart->onStart->onResume->onPause->onStop->onDestroy
 *
 *  一般情况下
 *  onCreate、onStart、onResume、onRestart是一起的,
 *  onRestart调用会紧接着调用onStart
 *  onStart调用会紧接着调用onResume
 *
 *  同理onPause、onStop也是一起的
 *  onPause调用会紧接着调用onStop
 *
 */
class ActivityDemoActivity : AppCompatActivity() {

    /**
     * 在首次创建 Activity 时调用
     * 一些初始化的工作可以在这里完成
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        Log.i(TAG, "onCreate>>>>>start")
        super.onCreate(savedInstanceState)
        //获取页面
        val binding = ActivityDemoBinding.inflate(layoutInflater)
        setContentView(binding.root)
        //监听器 打开一个activity
        binding.demo1.setOnClickListener {
            startActivity(Intent(this, ActivityDemo2Activity::class.java))
        }
        //finish
        binding.demo2.setOnClickListener { finish() }
        //打开一个activity,然后finish
        binding.demo3.setOnClickListener {
            startActivity(Intent(this, ActivityDemo2Activity::class.java))
            finish()
        }

        Log.i(TAG, "onCreate>>>>>end")
    }

    /**
     * 在Activity被停止后再次启动时调用
     * 紧接着会调用onStart方法,
     * 一些“activity第一次启动时候不启动,activity再次启动的时候”的业务可以写在这里
     */
    override fun onRestart() {
        Log.i(TAG, "onRestart>>>>>start")
        super.onRestart()
        Log.i(TAG, "onRestart>>>>>end")
    }

    /**
     * 在 Activity 即将对用户可见之前调用
     * 一些定时业务可以在这里开始
     */
    override fun onStart() {
        Log.i(TAG, "onStart>>>>>start")
        super.onStart()
        Log.i(TAG, "onStart>>>>>end")
    }

    /**
     * 在 Activity 即将开始与用户进行交互之前调用
     * 这里页面也绘制结束,可以在这里获取控件的实际宽高
     */
    override fun onResume() {
        Log.i(TAG, "onResume>>>>>start")
        super.onResume()
        Log.i(TAG, "onResume>>>>>end")
    }

    /**
     * 在系统即将开始继续另一个 Activity或返回Home的时候调用
     * 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。
     * 紧接着会调用onStop方法
     * 极端情况,就是如果onPause的时候快速返回当前Activity,则会调用onResume方法
     */
    override fun onPause() {
        Log.i(TAG, "onPause>>>>>start")
        super.onPause()
        Log.i(TAG, "onPause>>>>>end")
    }

    /**
     * 在 Activity 对用户不再可见时调用
     * 如果重新返回当前Activity,会调用onRestart
     * 如果Activity被销毁,会调用onDestroy方法
     *
     */
    override fun onStop() {
        Log.i(TAG, "onStop>>>>>start")
        super.onStop()
        Log.i(TAG, "onStop>>>>>end")
    }

    /**
     * 在Activity被销毁前调用
     *  当Activity结束(对Activity调用了finish方法),
     *  或系统为节省空间而暂时销毁该Activity实例时,可能会调用它。
     *  可以通过 isFinishing 方法区分这两种情形。
     */
    override fun onDestroy() {
        Log.i(TAG, "onDestroy>>>>>start")
        super.onDestroy()
        Log.i(TAG, "onDestroy>>>>>end->isFinishing=$isFinishing")
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值