作者issuemylove (NotLove)
看板AndroidDev
標題[問題] static broadcast receiver幾時反註冊
時間Mon Nov 14 19:00:55 2016
1.
想請問在application的onCreate中註冊一個broadcastReceiver
要在哪個時間點作 unregister反註冊呢? 或者不用反註冊也沒關係?
broadcast在應用中都是一直要存在的,不用反註冊沒關係嗎?
2.
另外問個問題,我app一開啟會有需要永久存在的變數
(變數裡面有註冊上述的broadcastReceiver)
我把它宣告成static好,還是把它宣告在service內讓它永久存在好呢?
宣告成static broadcast receiver一樣會都收的到廣播嗎?
如果是在service內,當service被回收就功能失效了QQ
可是又怕static方法會收不到廣播(跳出app畫面外的話)
懇請大大們賜教,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.18.239
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1479121257.A.E46.html
※ 編輯: issuemylove (36.230.18.239), 11/14/2016 19:01:19
1F:→ tn00364477: 是問系統BroadcastReceiver還是LocalBroadcast? 11/14 20:43
我本身是註冊 ACTION_POWER_DISCONNECT
算是系統broadcastReceiver
2F:→ ssccg: 1.當你不想再接收/處理那個事件的時候啊... 11/14 21:18
我是希望常駐跟application存活時間一樣長,所以我不知道甚麼時候放掉
還是不用放掉
還是說有方法之道application甚麼時候掛掉
3F:→ ssccg: 2.看不懂在問什麼,app畫面(activity畫面)只跟activity有關 11/14 21:21
4F:→ ssccg: activity在不在最上層跟receiver沒有關係 11/14 21:22
想要app在背景時,也能夠藉由寫code的方式將receiver註冊並接收訊息
因為是背景我感覺需要用service在背景跑並註冊receiver
還是說我當初用application註冊該receiver就可以達到想要的效果呢?
(我的app在背景,也可以讓receiver收到訊息)
※ 編輯: issuemylove (175.181.185.73), 11/14/2016 21:53:59
5F:→ ssccg: 就不用放掉,android結束application通常直接kill process 11/14 21:56
6F:→ ssccg: 2 你的感覺是錯的,沒有什麼在背景跑就一定要service 11/14 21:57
7F:→ ssccg: receiver有註冊、application process活著就會收到 11/14 21:58
8F:→ ssccg: service是用在真的有要在背景執行的工作,不是用來hold變數 11/14 22:04
9F:→ ssccg: 還是註冊receiver用的 11/14 22:05
10F:→ ssccg: 如果是需要在app process死掉的情況下還要收到broadcast 11/14 22:05
11F:→ ssccg: 應該把receiver註冊在manifest 11/14 22:06
瞭解!謝謝大大的概念解說!
※ 編輯: issuemylove (36.230.18.239), 11/15/2016 10:09:57