打开Activity时,不会在Activity中调用sendBroadcast

时间:2014-07-31 11:15:42

标签: android android-intent android-fragments service android-broadcast

我正在创建一个我收到XMPP数据包的应用程序。我的应用程序从前台开始,如果没有启动就开始粘贴服务,并开始在后台接收消息并通知它们。通知效果很好,点击后会显示数据。当我从服务中进行 sendBroadcast 调用时,问题就出现了(有时也会出现在某些手机中),以便我可以在Activity打开时异步更新Activity中的消息文本。

我的应用程序是使用Activity制作的,其中有两个片段(SherlockFragment)

所以我在一个片段中制作了一个私人广播接收器,我想要显示文本(更新的文本)。

代码写在下面

public class newMessage extends BroadcastReceiver 
{
@Override
   public void onReceive(Context context, Intent intent) 
   {    
    Log.v("ONMESSAGE", "broadcast");
       String action = intent.getAction();
       if(action.equalsIgnoreCase("NewMessage")){    
          Bundle extra = intent.getExtras();
          String username = extra.getString("from");
          String message = extra.getString("message");
          showMessage(username, message);
          Log.v("ONMESSAGE", "in broadcast is " + username);
         }
   }
}

然后我在Fragment类

中做出如下声明
private newMessage messageReceiver = new newMessage();

在onCreateView中我写了下面一行

getActivity().registerReceiver(messageReceiver, new IntentFilter("NewMessage"));

我现在没有取消注册广播接收器,我也试过这样做。

当我在服务中收到消息时,我打电话给下面的代码。

 Intent i = new Intent("NewMessage");  
 i.putExtra("message", message);    
 i.putExtra("from", from);
 context.sendBroadcast(i);

我没有添加广告来表明原因我在课堂上写的时候不知道怎么做。

有时,它调用sendbroadcase,一切运行良好,但有时它不会调用,只是生成通知。

0 个答案:

没有答案