Lifecycle的使用

程序员 2024-10-7 14:37:34 37 0 来自 中国
媒介

作为jetpack的第一篇,我还会附带表明下一些比较模糊的概念。下面来解说下jetpack相干知识。
本日涉及知识:

  • jetpack与AndroidX
  • Lifecycle用来做什么
  • Lifecycle使用步调
  • 结合具体例子解说Lifecycle的使用
    4.1 添加Lifecycle依靠
    4.2 在 Activity 布局中添加自界说控件的引用
    4.3 在 Activity 中添加生命周期绑定
    4.4 自界说Chronometer代码
一.   jetpack 与 AndroidX

jetpack是一套Android开发标准与模板,目标是镌汰冗余,内存走漏什么的,jetpack中不少的组件均收录在AndroidX中,由于Android SDK 更新比较慢,以是产生了AndroidX项目用于快速更新满足快速开发需求。大抵就是这个样子。
二.  Lifecycle 用来做什么

Lifecycle的产生是为相识耦业务逻辑与页面(包罗Activity和Fragment)生命周期严肃绑定的题目。
三.  Lifecycle 使用步调


  • 在app_module对应的build.gradle中引入Lifecycle相干依靠
  • 让业务逻辑类实现DefaultLifecycleObserver接口,DefaultLifecycleObserver中拥有
onCreate(@NonNull LifecycleOwner owner) onStart(@NonNull LifecycleOwner owner)onResume(@NonNull LifecycleOwner owner)onPause(@NonNull LifecycleOwner owner)onStop(@NonNull LifecycleOwner owner)onDestroy(@NonNull LifecycleOwner owner)生命周期,我们可以在这里处置惩罚与页面生命周期相干的业务逻辑

  • 在Activity或Fragment中添加Lifecycle监听
四.  结合具体例子解说 Lifecycle 的使用

4.1 添加Lifecycle依靠

在app_module对应的build.gradle中添加Lifecycle依靠:
dependencies {    // Java 8支持的 DefaultLifecycleObserver    implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1"   //其他代码省略    //......}4.2  在 Activity 布局中添加自界说控件的引用

这里我们自界说一个计时器控件MyChronometer,并将其计时逻辑绑定在MainActiviy生命周期中,下面给出其在MainActiviy对应布局activity_main.xml中引用代码如下:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".ui.MainActivity">    <TextView        android:id="@+id/tv_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.08" />    <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="30dp"        android:text="计时"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/tv_name" />    <com.ktdemo.function.MyChronometer        android:id="@+id/timeChronometer"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/btn" /></androidx.constraintlayout.widget.ConstraintLayout>4.3  在 Activity 中添加生命周期绑定

接着在MainActivity中给出MyChronometer绑定生命周期监听利用,代码显示如下:
@RequiresApi(Build.VERSION_CODES.N)class MainActivity : AppCompatActivity(), View.OnClickListener {    private lateinit var mBingding: ActivityMainBinding    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        mBingding = ActivityMainBinding.inflate(layoutInflater)        setContentView(mBingding.root)        initData()        setListener()    }    private var initData = {        mBingding.tvName.text = "我是谁"        //绑定生命周期监听        lifecycle.addObserver(mBingding.timeChronometer)    }    private var setListener = {        LogUtil.i("====setListener=====")        mBingding.btn.setOnClickListener(this)    }    override fun onClick(v: View) {        when (v.id) {            R.id.btn -> {                LogUtil.i("====我点击了=====")            }            else -> {            }        }    }}效果图如下:

4.4  自界说Chronometer代码
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:44, Processed in 0.157553 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表