简述
大多数Android Framework中的app组件都有自己的生命周期。这些生命周期由操作系统或者运行在你的进程中的框架代码所管理。它们是Android系统工作原理的核心,你必须遵守。否则就由可能会导致内存泄漏甚至崩溃
官方实现的Lifecycle 是一个持有组件(比如 activity 或者 fragment)生命周期状态信息的类,并且允许其它对象观察这个状态。主要使用两个枚举来跟踪相关组件的生命周期状态。很好的解决了某些组件在Activity生命周期状态变化后无法感知的问题。但是官方并没有独立成库供其他框架使用,只是存在官方的ViewModels、 LiveData框架中。
为了解决这个问题,我就从源码中将Lifecycle的实现拿了出来,并用kotlin语言重新封装了一遍,目前还没有实现依赖注入部分,只是实现了LifecycleObserver回调。
github 地址:https://github.com/Papeone/KLifecycle
使用方法
1. 将activity 继承自 LifecycleAppCompatActivity 类,作为被观察者者
class LifeMainActivity : LifecycleAppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_life_main)
// 添加观察者
lifecycleRegistry.addObserver(TestLife())
}
}
2. 创建观察者类 TestLife 实现 LifecycleObserver 接口 就可以监听 activity的生命周期变化了
class TestLife : LifecycleObserver {
override fun onStateChanged(lifecycleOwner: LifecycleOwner, event: Lifecycle.Event) {
Log.d("TestLife", event.name)
}
}
效果展示
总结
是时候用这种优雅的方式给Presenter添加生命周期管理了,还等什么,一个字就是干。