繁体   English   中英

从主要活动android调用BroadCast接收器

[英]Calling BroadCast receiver from main activity android

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

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

问候

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

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

而且,您还可以添加android.intent.action.BOOT_COMPLETED意向过滤器,以在设备启动后启动接收器

您可以从任何活动(包括您的主要活动)或班级中广播消息。 我正在使用一个帮助器类来做到这一点:

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);

}

}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM