Broadcast Receiver 筆記

曹嘉豪
Apr 8, 2022

--

Broadcast Receiver 有分為兩種,一種為 Static、一種為 Dynamic

Static 為在 AndroidManifest.xml中宣告,讓 APP 可以透過 intent-filter 在關閉時接收到 intent。在 API 26 (Android 8.0) 後只能接收到 explicit、不能接收到 implicit,但對於這部分是有例外的,請看Implicit Broadcast Exceptions

而對於上面例外的 Implicit List 倒是很好理解,像是 APP 所設置的 AlarmManager 會因為重開機而被取消,這時候就需要透過ACTION_BOOT_COMPLETED來重新註冊 AlrmManager,才不會導致因為重開機就失去鬧鐘功能。

Dynamic 則為在 App 開啟的狀態宣告 registerBroadcast ,讓 APP 在開啟時能收到 intent,這包含 explicit 以及 implicit 的。

explicit 以及 implicit

explicit 與 implicit 指的是 intent 有無指定 app,也就是說在 API 26 後 static 的 broadcast receiver 在 APP 關閉時只能接收到有指定 APP 的 intent,而 dynamic 的 broadcast receiver 則可以接收兩者。

--

--