android、鸿蒙开发--第九章-->简单讲解生命周期

一、Android中Activity的生命周期


import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

//本章节探讨Activity的生命周期
class LifecycleActivity : AppCompatActivity() {

    private val TAG = "LifecycleActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        /***此处初始化数据和布局,但是不可以在主线程做耗时过长的任务
         * 否则会造成界面卡顿,严重会使程序ANROOM(程序崩溃)
         * ANROOM这两个后续在讲解
         * **/
        Log.d(TAG, "Activity创建方法")
    }

    override fun onStart() {
        super.onStart()
        /***不可以在主线程做耗时过长的任务
         * 否则会造成几面卡顿,严重会使程序ANROOM(程序崩溃)
         * 界面创建好了,但是用户不可以见
         * **/
        Log.d(TAG, "Activity启动回调方法")
    }

    override fun onRestart() {
        super.onRestart()
        /***不可以在主线程做耗时过长的任务
         * 否则会造成几面卡顿,严重会使程序ANROOM(程序崩溃)
         * 界面重新创建时候的回调
         * **/
        Log.d(TAG, "ActivityRestart回调方法")
    }

    override fun onResume() {
        super.onResume()
        /*** 这个时候用户可见界面时候的回调* */
        Log.d(TAG, "Activity渲染或者恢复方法")
    }

    override fun onPostResume() {
        super.onPostResume()
        /**
         * 这个时候用户可见界面时候的回调,在onResume执行完成后的回调
         * */
        Log.d(TAG, "Activity渲染-恢复,结束的回调方法")
    }

    override fun onPause() {
        super.onPause()
        /**
         * 当前界面可见部分时候的回调,
         * 不可以在主线程做耗时过长的任务,
         * 否则会造成几面卡顿,严重会使程序ANROOM(程序崩溃)
         * 如果启动新界面,在这里Ui线程(主线程)耗时任务,会影响到新界面的渲染速度
         * 一般常在这里处理资源处理,比如停止动画效果等
         * */
        Log.d(TAG, "Activity-暂停方法")
    }

    override fun onStop() {
        super.onStop()
        /**
         * 当前界面不可见时候的回调,
         * 不可以在主线程做耗时过长的任务,
         * 否则会造成几面卡顿,严重会使程序ANROOM(程序崩溃)
         * 如果启动新界面,在这里Ui线程(主线程)耗时任务,会影响到新界面的渲染速度
         * 一般常在这里处理资源处理,比如停止动画效果等
         * */
        Log.d(TAG, "Activity-停止方法")
    }

    override fun onDestroy() {
        super.onDestroy()
        /*** 一般常在这里处理资源处理,清除动画,释放资源* */
        Log.d(TAG, "Activity-界面即将销毁回调方法")
    }
}

如果我们封装的一个类,需要感知activity的生命周期,这个类在相关生命周期处理部分逻辑,我们需要怎么处理呢。

我们来建立MyLifecycleUtils让这个类继承DefaultLifecycleObserver,并在Activity的onCreate()方法添加对这个类的生命周期回调。两行代码搞定:

        val myLifecycleUtils = MyLifecycleUtils()
        lifecycle.addObserver(myLifecycleUtils) // lifecycle就是getLifecycle()

二、Android Fragment的生命周期

package com.tmg.project.fragment

import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment

class LifecycleFragment : Fragment() {

    private val TAG = "LifecycleFragment"


    override fun onAttach(context: Context) {
        super.onAttach(context)
        Log.d(TAG,"此处是Fragment与Activity绑定的时候回调")
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        Log.d(TAG,"此处是创建View的回调")
        return super.onCreateView(inflater, container, savedInstanceState)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        /**此处View创建完成的回调**/
        Log.d(TAG,"此处View创建完成的回调")
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        /*** 此处我们就可以做初始化数据处理了* ***/
        Log.d(TAG,"绑定的Activity创建好了的回调")
    }

   /**以下方法同Activity的基本相似***/
    override fun onStart() {
        super.onStart()
    }
    override fun onPause() {
        super.onPause()
    }

    override fun onResume() {
        super.onResume()
    }

    override fun onDestroy() {
        super.onDestroy()
    }
    /**以上方法同Activity的基本相似***/

    /***
     * 需要单独处理, 监听Fragment的生命周期同Activity基本一致
     * 不过你需要在你的类单独写一个方法,在onDestroyView()中去调用它,这就是与监听Activity生命周期的区别
     * ****/
    override fun onDestroyView() {
        super.onDestroyView()
        Log.d(TAG,"这是移除布局View的回调,在这里我们就可以释放资源等处理。")
    }

    //结束与Activity的绑定
    override fun onDetach() {
        super.onDetach()
        Log.d(TAG,"结束与Activity的绑定")
    }
}

Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。

三、鸿蒙开发的生命周期和界面跳转

参见:https://blog.csdn.net/d312697510/article/details/137819277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值