0

我想从我的应用程序的主要活动开始广播接收器类。主要活动有所有的 GUI 东西,这个活动启动一个执行所有工作的服务。为了在重新启动后启动此服务,我编写了一个广播接收器类。现在我很困惑在哪里调用广播接收器类。

  • 如何从我的主要活动中调用它(我不想让主要活动成为广播接收器)?
  • 如果我从主活动调用广播接收器,它会在每次活动开始时创建一个广播类的新实例。如果是这样,是否会导致内存泄漏或者之前的广播接收器实例会被自动销毁?

问候

4

2 回答 2

1

作为一种解决方案,您可以将自己的意图过滤器应用于BroadcastReceiver,注册它,然后sendBroadcast()在注册接收器后立即调用您的活动。这假设您在onReceive()方法内部比较接收器的意图。

内存呢,这取决于您如何管理活动的生命周期,因为在剩余对活动的引用的情况下,它不会从内存中删除,因此会导致创建接收器的多个实例。

您还可以添加android.intent.action.BOOT_COMPLETED意图过滤器以在设备启动后启动您的接收器

于 2013-06-14T12:39:54.167 回答
0

您可以从任何活动(包括您的主要活动)或班级广播消息。我正在使用辅助类来执行此操作:

public class BroadcastHelper {

public static void sendBroadcast(Context context, String message, Serializable value) {

    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction(message);
    broadcastIntent.putExtra(Constants.BROADCAST_MESSAGE, value);
    context.sendBroadcast(broadcastIntent);

}

}

不要忘记在清单文件中注册您的接收器。

使用这种方法不会创建任何类的新实例,除了意图本身,它将被垃圾收集。

于 2013-06-14T12:47:56.700 回答