【问题标题】:Should BroadcastReceiver be declared inside activities?BroadcastReceiver 是否应该在活动中声明?
【发布时间】:2016-04-10 02:52:47
【问题描述】:

我想知道在这两者之间处理 BroadcastReceiver 创建的更简洁的设计方法是什么:

  1. 在 Activity/Fragment 中直接声明 BroadcastReceiver 并在其中覆盖 onReceived 方法。

  2. 在包“receiver”中创建另一个自定义接收器类,扩展 BroadcastReceiver 类并覆盖 onReceive。然后,在 Activity/Fragment 中实例化该自定义接收器类。

【问题讨论】:

  • 基本上你想知道是使用匿名类还是正确声明类?两种选择都将导致相同的结果,答案将完全基于意见

标签: android design-patterns broadcastreceiver android-broadcastreceiver


【解决方案1】:

有两种类型的广播接收器

1)在活动中注册的动态广播接收器

2) 在 Manifest 文件中注册或声明的静态广播接收器,带有带有特定操作的接收器标签(何时触发接收器)

用途:比如说接收消息

1) 动态广播接收器用于接收广播意图,主要是刷新通过send Broadcast方法发送的消息。

2)Static Broadcast Receiver 用于接收消息。这里注册的带有 SMS 接收动作的接收器将接收消息,然后将其发送到活动

最后取决于开发者使用哪一个,什么时候根据需求使用

【讨论】:

  • 那么我认为我一直在滥用它,因为我用它来启动一个意图服务或 onReceived 中的服务。这是不好的做法吗?
【解决方案2】:

没有更简洁的方法,这取决于您如何编码。

遵循 DRY 原则,我只会在发现在不同的 Activity 中需要它们时立即扩展 BroadcastReceiver

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2016-09-14
    • 2015-03-29
    • 2019-02-27
    相关资源
    最近更新 更多