Android Lifecycles组件(生命周期感知组件)的简单使用,2024年阿里Android面试题精选

102 阅读4分钟

为给定提供者创建一个新的LifecycleRegistry。

公开方法

void addObserver(LifecycleObserver observer)

添加一个LifecycleObserver,当LifecycleOwner更改状态时,将通知该服务器。

Lifecycle.State getCurrentState()

返回生命周期的当前状态。

int getObserverCount()

观察者数量。

void handleLifecycleEvent(Lifecycle.Event event)

设置当前状态并通知观察者。

void markState(Lifecycle.State state)

不建议使用此方法。使用setCurrentState(State)。

void removeObserver(LifecycleObserver observer)

从观察者列表中删除给定的观察者。

void setCurrentState(Lifecycle.State state)

将生命周期移至给定状态,并将必要的事件分派给观察者。

继承的方法

从班级 androidx.lifecycle.Lifecycle

从班级 java.lang.Object

公共建设者

生命周期注册

公共LifecycleRegistry(LifecycleOwner提供程序)

为给定提供者创建一个新的LifecycleRegistry。

通常,您应该在LifecycleOwner类的构造函数中创建此对象,并保留相同的实例。

参量

provider LifecycleOwner:所有者LifecycleOwner

公开方法

addObserver

public void addObserver(LifecycleObserver观察器)

添加一个LifecycleObserver,当LifecycleOwner更改状态时,将通知该服务器。

给定的观察者将进入LifecycleOwner的当前状态。例如,如果LifecycleOwner在Lifecycle.State.STARTED状态,给定的观察者会收到Lifecycle.Event.ON_CREATE,Lifecycle.Event.ON_START事件。

参量

observer LifecycleObserver:观察者通知。

getCurrentState

公共Lifecycle.State getCurrentState()

返回生命周期的当前状态。

退货

Lifecycle.State 生命周期的当前状态。

getObserverCount

public int getObserverCount()

观察者数量。

退货

int 观察者数量。

handleLifecycleEvent

公共无效handleLifecycleEvent(Lifecycle.Event事件)

设置当前状态并通知观察者。

请注意,如果的currentState状态与上次对此方法的调用相同,则调用此方法无效。

参量

event Lifecycle.Event:收到的事件

markState

公共无效markState(Lifecycle.State状态)

不建议使用此方法。

使用setCurrentState(State)。

将生命周期移至给定状态,并将必要的事件分派给观察者。

参量

state Lifecycle.State:新状态

removeObserver

公共无效removeObserver(LifecycleObserver观察器)

从观察者列表中删除给定的观察者。

如果在调度状态更改时调用此方法,

如果给定的观察者尚未接收到该事件,它将不会接收到该事件。

如果给定的观察者使用多种方法来观察当前调度的事件,并且至少有一个接收到该事件,则所有这些人都将接收到该事件,然后将其删除。

参量

observer LifecycleObserver:要删除的观察者。

setCurrentState

公共无效setCurrentState(Lifecycle.State状态)

将生命周期移至给定状态,并将必要的事件分派给观察者。

参量

state Lifecycle.State:新状态

package com.example.myjeptdemo import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import com.example.myjeptdemo.entity.requestEntity.NeiHanEntity import com.example.myjeptdemo.entity.responResult.NeiHanResult import com.example.myjeptdemo.viewmodel.NeiHanViewModel import com.jiutong.base.utils.LogUtils

abstract class BaseActivity : AppCompatActivity(), LifecycleOwner {

private lateinit var mRegistry: LifecycleRegistry

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

mRegistry = LifecycleRegistry(this)

mRegistry.currentState = Lifecycle.State.CREATED

//通过一下方法的使用,可以同步感知activity的 生命状态

MediaCompoment(this)//其他非activity组件使用

lifecycle.addObserver(object : LifecycleEventObserver {

override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {

}

})

}

override fun onStart() {

super.onStart()

mRegistry.currentState = Lifecycle.State.STARTED

mRegistry!!.handleLifecycleEvent(Lifecycle.Event.ON_START)

LogUtils.d(mRegistry.currentState.toString())

}

override fun onResume() {

super.onResume()

mRegistry.currentState = Lifecycle.State.RESUMED

mRegistry!!.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)

LogUtils.d(mRegistry.currentState.toString())

}

override fun onPause() {

面试复习路线,梳理知识,提升储备

自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。

关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

资料获取方式:前往我的GitHub

  • 架构师筑基必备技能
  • Android高级UI与FrameWork源码
  • 360°全方面性能调优
  • 解读开源框架设计思想
  • NDK模块开发
  • 微信小程序
  • Hybrid 开发与Flutter

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:

Android开发七大模块核心知识笔记

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全 包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。