如何在没有Activity的情况下使用LocalBroadcastManager

时间:2013-09-12 07:56:13

标签: java android localbroadcastmanager

我通过扩展BroadcastReceiver获得了我的班级“ ABC ”。但最近,我偶然发现LocalBroadcastManager

这是我的班级声明:

public class ABC extends BroadcastReceiver {}

因此,ABC正在作为监听器工作,并基于它将调用另一个对象的操作。

我到处查看是否可以在没有活动的情况下使用LocalBroadcastManager。实际上,ABC类是一个核心应用程序类,它不连接到任何UI组件。

请告诉我如何在我的方案中使用LocalBroadcastManager。 我是Android的新手。请帮忙。

2 个答案:

答案 0 :(得分:2)

也许答案有点晚了,但我希望它对你有用。

第一步是有一个扩展应用程序的类。这将用于从Activity外部获取应用程序上下文。

public class AppContext extends Application {

    private static AppContext instance;

    public AppContext() {
      instance = this;
    }

    public static Context getContext() {
      return instance;
    }
}

然后将以下代码添加到要将消息发送到LocalBroadcasr

的位置
Intent intent = new Intent("intent-filter");
intent.putExtra("message", "your-message-here");
LocalBroadcastManager.getInstance(AppContext.getContext()).sendBroadcast(intent);

最后,你的班级ABC会在我向你展示下一个

时收到这个意图
private BroadcastReceiver receiver;

public class ABC{

public ABC(){
    receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
      //receive your message here
      String message = intent.getStringExtra("message");
    };
        LocalBroadcastManager.getInstance(AppContext.getContext()).registerReceiver(receiver, new IntentFilter("intent-filter")); 
}

答案 1 :(得分:-3)

LocalBroadcastManager  localBroadcastManager = LocalBroadcastManager.getInstance(context);
localBroadcastManager.registerReceiver(receiver); // or other operations