2015年12月14日 星期一

Android 開發心得整理

Android 開發心得整理

Application

  • 只要有該 App 的任何元件(Activity、Service、BroadcastReceiver)執行,Application 就會存在。

Service

  • 簡單一點的話就用 IntentService

  • 同一個 Intent 的 Service 不會同時間執行(尚未測試不同 Intent 的 Service),若執行了兩個相同的
    Service 在 S1 還沒執行完時不會執行 S2,S2 會在S1 執行完後立刻執行,並且 S1 不會執行 onDestroy 而 Service2 會。

  • 使用 AlarmManager 註冊 Service 預計執行 Service,在時間到達前可以重新註冊(update)達成延後或提 前執行或取消註冊。當有兩個相同的 Service 到達執行時間時,僅有 S1 會執行,S2 處於 ready 狀態,ready 狀態的 Service 無法更新、取消註冊。

  • 已經向 AlarmManager 註冊的 Service 就算重新開機,一樣會執行,可以理解為是向 OS 註冊。

  • 當 Service 執行到一半,以 Android task 關閉方式 Kill 該 Service 所屬 App,Service 會被腰斬(沒有執行完),若使用 startForeground 則不會被腰斬,但不會執行 onDestroy。

EventBus

  • 注意 onEvent 的 Thread 問題

  • 想保留該 event 的話可以使用 postSticky

Realm

  • 在 Thread1 撈出來的 RealmObject 無法在 Thread2 存取(讀取也不行!)。

  • 只有在 Main Thread(UI Thread) 撈出來的物件會自動更新。

  • 在非 Main Thread 撈資料前,先使用 refresh,確保資料是最新的狀態。

其他 Lib

Written with StackEdit.

沒有留言:

張貼留言