iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
自我挑戰組

Android App 初學者從零開始用Kotlin寫APP系列 第 20

<Day20> lifecycle-aware 元件

  • 分享至 

  • xImage
  •  

開發應用時,會基於生命週期實現某些功能,透過lifecycle-aware 元件感知應用元件生命週期的變化,透過事件與狀態這兩類來感知應用元件的生命週期變化。

事件
https://ithelp.ithome.com.tw/upload/images/20201001/201305981k3TgBCpKc.png

Lifecycle.Event 生命週期的事件,分別是:ON_CREATE、ON_START、ON_RESUME、ON_PAUSE、ON_STOP、ON_DESTROY、ON_ANY。最後一種事件可以代表前面任意一種。

ex,當 Activity onCreate() 生命週期方法被呼叫時會產生 ON_CREATE 事件,觀察者可以監聽該事件以便處理Activity此時的生命週期。

狀態
https://ithelp.ithome.com.tw/upload/images/20201001/20130598GqITaNC9sf.png

Lifecycle.State 表示生命週期的狀態分別是:INITIALIZED、 DESTROYED、CREATED、STARTED、RESUMED。

ex,當 Activity 進入 INITIALIZED 狀態,在 onCreate() 生命週期方法呼叫後進入 CREATED 狀態,在 onStart() 生命週期方法呼叫後進入 STARTED 狀態,在 onResume() 生命週期方法呼叫後進入 RESUMED 狀態。

class CheckObserver implements LifecycleObserver {

  private static final String TAG = CheckObserver.class.getSimpleName();
  
  @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
  public void onCreate() {
      Log.d(TAG, "onCreate  event");
  }
  
  @OnLifecycleEvent(Lifecycle.Event.ON_START)
  public void onStart() {
      Log.d(TAG, "onStart event");
  }

  @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
  public void onResume() {
      Log.d(TAG, "onResume event");
  }

  @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
  public void onPause() {
      Log.d(TAG, "onPause event");
  }

  
}

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
     // ...
     getLifecycle().addObserver(new CheckObserver());
  }
}

reference :https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State
reference :https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event
reference :https://www.mdeditor.tw/pl/2U7U/zh-tw


上一篇
<Day19>ViewModel
下一篇
<Day21>LiveData
系列文
Android App 初學者從零開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言