Re: [問題] Broadcast Receiver

看板AndroidDev作者 (我的MSN上上下下...)時間11年前 (2014/03/31 22:19), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《fake01 (假面超人)》之銘言: : 大家好 : 小弟目前再用BroadcastReceiver,想請問不同的activity都會要使用到 : 廣播來接收訊息,那這個時候就很麻煩,因為要在每個activity都要宣告一次 : public class Receiver extends BroadcastReceiver..... : 很麻煩,是不是可以直接寫一個class,然後其他activity 就讀取這個class就好 : 重點在class裡面這行 : public void onReceive(Context context, Intent intent) : 不知道其他activity 如何給參數.. 才可以共用 : 麻煩各位了 : 謝謝大家 想了一下如果要利用一個Brocast收到訊息後對其他Activity 通知的話 1.如果想利用一個BrocastReciver來達成的話... 會建議先寫一個抽象類別 BaseActivity.java 裡面宣告一個變數 public static Handle mHanlder ... ; 在宣告一個static function public static void sendMessage(Message msg){ // ...對 mHanlder send message } 2.Receiver.java在接收到廣播後透過 BaseActivity.sendMessage(...); 傳遞要執行的參數 3.接著就是在每個Actitvity要繼承BaseActivity 在onCreate內去產生Handler覆蓋hanldeMessage方法 如果在handleMessage內做的事情會是一樣的就在BaseActivity內寫成共用方法 public void onCreate(...){ ... mHander = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 1: updateTitle(); break; } }; } } 以上沒實作測試,不過我猜應該可以達到你的目的 另一個方法我覺得比較好 就是在BaseActivity內宣告一個 BrocastReciver mReciver ; 在onCreate跟 onPause自己處理註冊機制 這樣所有的Activity都可以收到通知,做法感覺也比較正統 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.138.251 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1396275575.A.018.html

03/31 22:22, , 1F
onResume onPause?
03/31 22:22, 1F

03/31 22:39, , 2F
另外第一個做法 要小心處理 不然會memory leak
03/31 22:39, 2F

04/04 12:09, , 3F
謝謝指教,我會試試看
04/04 12:09, 3F

04/04 12:10, , 4F
今天放假要出去玩(喂
04/04 12:10, 4F
文章代碼(AID): #1JENbt0O (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1JENbt0O (AndroidDev)