【问题标题】:How to use a BroadcastReceiver to update two activities?如何使用 BroadcastReceiver 更新两个活动?
【发布时间】:2011-04-28 00:40:34
【问题描述】:

我有一个只有两个活动的应用程序,主要活动和 PreferenceActivity。当状态发生变化时(打开或关闭飞行模式,打开和关闭 GPS 等),我想更新这两个活动。

我只需要在应用程序处于活动状态时更新一些变量和 UI,所以我想在代码中而不是在应用程序清单中注册接收器会更好。

由于我不想在每个活动中复制代码,我尝试将 BroadcastReceiver 放在它自己的类中。但是后来我发现我无法注册广播接收器。有没有办法解决这个问题?

谢谢你,梅尔

public class melsBigListener {


IntentFilter intentFilter = new IntentFilter("android.intent.action.SERVICE_STATE");
BroadcastReceiver receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        //TO DO Update both my main activity and the preference activity
        //TO DO deal with different intents via switch statement... 
    } 

}; 

//registering as receiver(like below) can not work
//registerReceiver(receiver, intentFilter);}

Relevant post:RegisterBroadcastReceiver in Manifest.xml setting or by implement source code

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:
    registerReceiver(receiver, intentFilter); should be in some method.
    

    melsBigListener 应该扩展活动,或者您需要将活动上下文传递给此类并将其用于 registerReceiver。

    与其做这些愚蠢的事情,不如在清单文件中写入寄存器接收器。

    【讨论】:

      【解决方案2】:

      我建议在清单中注册接收器并使用它来更改存储在首选项文件中的变量(应用程序是否正在运行),然后在需要时查询首选项以获取状态。

      但您可以扩展Application 并在Application.onCreate() 方法中的代码中注册接收器。

      【讨论】:

        【解决方案3】:

        BroadcastReceivers 应作为使用清单文件注册到手机的扩展类工作。我不太确定它将如何作为活动中的实例化类工作。到目前为止,从您的代码来看,Activity 和您的 BigListener 类都不会接收到意图,因为意图过滤器从未在清单中声明。

        解决您的问题: 1.创建一个myBroadcastReceiver,继承自BroadcastReceiver,在manifest中声明必要的intents 2.创建一个myApplication,从Application扩展 3. 通过在 myApplication 中切换变量,使用您的活动的 onCreate、onDestroy、onStartCmd、onPause 等来管理“仅当应用程序处于活动状态时”部分。 4. 每当收到意图时,使用 myBroadcastReceiver 读取 (3) 中的变量,以决定是否“需要更新一些变量”并进行相应更新。由于这些变量由您的 2 个活动共享,因此应将变量放在 myApplication 类中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-16
          • 2010-11-22
          相关资源
          最近更新 更多