首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LocalBroadcastManager未按预期工作

LocalBroadcastManager未按预期工作
EN

Stack Overflow用户
提问于 2014-11-20 04:50:52
回答 1查看 1.9K关注 0票数 1

在我的应用程序中,我必须从IntentService类中通知我的活动。为此,我正在使用LocalBroadcastManager。但是我在我的广播接收器的onReceive中没有收到任何东西。这是我写的。

在我的BaseActivity中,我注册了我的接收器。

代码语言:javascript
复制
public class BaseActivity extends FragmentActivity implements App {

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
}

@Override
protected void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(
            mMessageReceiver, new IntentFilter(custom-event-name));
}

@Override
protected void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(
            mMessageReceiver);
}

// Our handler for received Intents. This will be called whenever an Intent
// with an action named "custom-event-name" is broadcasted.
BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        System.out.println("Overlay Message" +bundle.getString("message"));
          }
      };
  }

我正在从我的RegisterAlarmIntentService课堂上发送一个本地广播。

代码语言:javascript
复制
  public class RegisterAlramIntentService extends WakefulIntentService implements
           APIConstants {

    public RegisterAlramIntentService() {
        super("AlarmService");
   }

    @Override
   public String getTag() {
        return "AlarmService";
   }

@Override
protected void onHandleIntent(Intent intent) {
            System.out.println("Working till here fine In RegisterAlarm");
            Bundle bundle = intent.getExtras();
            Intent localIntent = new Intent(custom-event-name);
            localIntent.putExtras(bundle );
            LocalBroadcastManager.getInstance(this).sendBroadcast(
                        localIntent);


      }
  }

调用onHandleIntent()方法。但是,我的接收器的onReceive()中没有接收到任何信息。请帮帮忙。提前谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-20 06:00:15

试一试

代码语言:javascript
复制
 public class RegisterAlramIntentService extends WakefulIntentService implements
           APIConstants {

   Intent localIntent;

    public RegisterAlramIntentService() {
        super("AlarmService");

       localIntent = new Intent(custom-event-name);
   }

    @Override
   public String getTag() {
        return "AlarmService";
   }

@Override
protected void onHandleIntent(Intent intent) {
            System.out.println("Working till here fine In RegisterAlarm");
            Bundle bundle = intent.getExtras();
            Thread.sleep(5000); // For Testing only because it is in whole new thread (which may not wait for your reciever to setup)
            localIntent.putExtras(bundle );
            LocalBroadcastManager.getInstance(this).sendBroadcast(
                        localIntent);


      }
  }

也在清单中:

代码语言:javascript
复制
<service android:name="com.commonsware.android.localcast.RegisterAlramIntentService"/>

请参阅this

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27031997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档