- Android Jetpack應用指南
- 葉坤
- 503字
- 2020-08-06 15:42:29
2.3 使用LifecycleService解耦Service與組件
2.3.1 LifeCycIeService基本介紹
在上文中,我們介紹了如何利用LifeCycle來監聽頁面的生命周期,以達到解耦組件的目的。我們知道,擁有生命周期概念的組件除了Activity和Fragment,還有一個非常重要的組件是Service。為了便于對Service生命周期的監聽,達到解耦Service與組件的目的,Android提供了一個名為LifecycleService的類。該類繼承自Service,并實現了LifecycleOwner接口。與Activity/Fragment類似,它也提供了一個名為getLifecycle()的方法供我們使用。LifecycleService的源碼如下所示。

2.3.2 LifecycIeService的具體使用方法
1.首先,我們需要在app的build.gradle文件中添加相關依賴。

2.添加依賴后,便可以使用LifecycleService類了。創建一個名為MyService的類,并讓它繼承自LifecycleService。由于LifecycleService是Service的直接子類,所以使用起來與普通Service沒有差別。

3.接下來是MyServiceObserver類,該類需要實現LifecycleObserver接口。與此同時,使用@OnLifecycleEvent標簽對那些你希望能夠在Service生命周期發生變化時得到同步調用的方法進行標識。

4.最后,在頁面中利用兩個Button,控制Service的啟動和停止,以測試我們的代碼。

5.通過LogCat中的日志可以看到,隨著Service生命周期的變化,MyServiceObserver中帶有@OnLifecycleEvent標簽的方法被自動調用了。這樣,我們便實現了組件對Service生命周期的監聽。

通過以上示例可以看出,當Service的生命周期發生變化時,不再需要主動對組件進行通知,組件能夠在其內部自行管理好生命周期所帶來的變化。LifecycleService很好地實現了組件與Service之間的解耦。