簡體   English   中英

從服務到活動的Android廣播

[英]Android Broadcast from Service To Activity

我正在嘗試從服務發送廣播到活動。 我可以驗證廣播是從服務中發送的,但是活動不會發送任何內容。

這是相關的服務代碼:

   Intent i = new Intent(NEW_MESSAGE);  
   i.putExtra(FriendInfo.USERNAME, StringUtils.parseBareAddress(message.getFrom()));
   i.putExtra(FriendInfo.MESSAGE, message.getBody());
   i.putExtra("who", "1");
   sendBroadcast(i);

並且活動類中的接收端:

public class newMessage extends BroadcastReceiver 
{
@Override
   public void onReceive(Context context, Intent intent) 
   {    
    String action = intent.getAction();
       if(action.equalsIgnoreCase(IMService.NEW_MESSAGE)){    
          Bundle extra = intent.getExtras();
          String username = extra.getString(FriendInfo.USERNAME);   
          String message = extra.getString(FriendInfo.MESSAGE);
          String who = extra.getString("who");
         }
   }
}

BroadcastReceiver在Activity中定義。 我在Activity的onCreate方法中注冊接收器,而不是在Manifest文件中。

我很難過為什么它不會記錄。 任何東西。

任何見解?

編輯
注冊如下:

 registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE));

其中“messageReceiver”定義為

private newMessage messageReceiver = new newMessage();

IMService.NEW_MESSAGE只是一個string =“NewMessage”

我不確定它是否特定於設置,或者它是否一般是修復,但是將register/unregister移動到onResume/onPause _respectively_並且沒有在onCreate注冊解決了我的問題。

試試這兩件事:

  1. 使用清單文件注冊接收器(但它幾乎沒有幫助)
  2. 嘗試讓您的Receiver成為常規課程,而不是內部課程。

內部類廣播接收器將無法處理廣播(意味着它無法定位該類)。 所以把它作為一個單獨的類

絕對會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM