首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >被发送的流氓广播意图

被发送的流氓广播意图
EN

Stack Overflow用户
提问于 2020-06-11 08:55:13
回答 1查看 51关注 0票数 0

我已经在我发布的应用程序中实现了接收广播意图,实际上发送它们将在不久的将来完成。然而,意图已经收到,它崩溃的预期,因为强制性的捆绑附加是缺失的。在看到这次崩溃之后,我想使用LocalBroadcastManager,但现在的问题是,这是否是一个很好的实践。

BroadcastReceiver没有在清单中注册,但它在Application类中注册:

代码语言:javascript
运行
复制
class App : Application() {

    override fun onCreate() {
        super.onCreate()
        registerReceiver(NotificationBroadcastReceiver(), IntentFilter("com.me.my_app.REUPLOAD_REQUESTED.open_notification"))
    }
}

现在,我在Crashlytics中为一个用户接收了这个崩溃,在一个小时内收到了25次:

代码语言:javascript
运行
复制
Fatal Exception: java.lang.RuntimeException
Error receiving broadcast Intent { act=com.me.my_app.REUPLOAD_REQUESTED.open_notification flg=0x10 pkg=com.me.my_app (has extras) } in d.a.a.a.v.b.a@41e45b2

那么是谁在发送这些意图呢?它能由用户自己来完成吗?

使用或不使用

我的应用程序有4个模块:一个包含Application和一些Dagger模块,还有一个单独的模块用于数据/域/表示层。之所以使用广播,是因为有两个松散耦合的组件:在数据层,FirebaseMessagingService接收一个FCM消息,该消息响应于向NotificationBroadcastReceiver发送意图,NotificationBroadcastReceiver负责显示通知并处理与该通知的交互。

应该使用LocalBroadcastManager吗?这不是实际的IPC,它只是一个保存BroadcastReceivers列表的单例。它被包装在雄激素内,目前还没有被标记为不受欢迎。

如果没有,应该使用什么?

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 10:44:53

在看到这次崩溃后,我将使用LocalBroadcastManager

LocalBroadcastManager已经被否决了。这种用于进程内部通信的“事件总线”模式被一些人认为是一种糟糕的编程实践。

,那么是谁在发送这些意图呢?它能由用户自己来完成吗?

好的。袭击者要进攻了。它可以通过adb shell,或者通过攻击者编写的自定义应用程序,或者可能通过一些自动安全扫描应用程序。

不要在应用程序的进程中使用IPC (registerReceiver() on Context)进行通信。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62320603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档