Jetpack学习之Lifecycle

#### Lifecycle
Lifecycle完美解决了组件对页面生命周期的依赖问题,使组件能够自己管理其生命周期。
 
系统组件(Activity/Fragment、Service和Application),有生命周期。
普通组件(也就是非系统组件/自定义组件)无法主动获知系统组件的生命周期事件。
Lifecycle可以帮助创建可感知生命周期的组件。
 
具体实现:
1、页面实现LifecycleOwner接口(在新版本的SDK中,Activity已经默认实现了该接口)。
2、观察者实现LifecycleObserver接口(该接口没有接口方法,无须任何具体的实现)。
3、在被观察者页面中通过getLifecycle().addObserver(observer)使观察者与被观察者绑定即可。
另外,拥有生命周期概念的组件除了Activity和Fragment,还有Service,要监听Service的生命周期,Android提供了一个类叫LifecycleService。该类继承自Service,并实现了LifecycleOwner接口。
 
例子:
class MyLocationListener: LifecycleObserver{
    private val TAG = MyLocationListener::class.java.simpleName
    private lateinit var onLocationChangedCallback: OnLocationChangedCallback

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    private fun startGetLocation(){
        Log.d(TAG, "startGetLocation()")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    private fun stopGetLocation(){
        Log.d(TAG, "stopGetLocation()")
    }

    fun setOnLocationChangedCallback(callback: OnLocationChangedCallback){
        this.onLocationChangedCallback = callback
    }

}

 

class LifecycleActivity : AppCompatActivity() {

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

        val listener = MyLocationListener()
        listener.setOnLocationChangedCallback(object : OnLocationChangedCallback {
            override fun onChange() {

            }
        })
        // 将观察者与被观察者绑定
        lifecycle.addObserver(listener)
   }  
}

 

Jetpack学习之Lifecycle

上一篇:模版:图论


下一篇:前导篇-性能测试流程