2

您可能知道,BroadcastReceiver 类的 onReceive() 方法的文档说:

当它在主线程上运行时,您永远不应该在其中执行长时间运行的操作(在考虑接收器被阻塞和候选者被杀死之前系统允许的超时时间为 10 秒)。您不能在 onReceive() 的实现中启动弹出对话框。

当我收到广播时,我想向用户显示 Toast,但我不确定 Toast 是否被视为“弹出对话框”,或者只有 Dialog 类中的对象是它们所指的对象。

我已经看到了许多在此函数中使用 Toast 的代码示例,但我不确定这是否是不好的做法,或者它是否会对性能产生很大的影响。

我想知道的是我是否应该在这个函数中创建一个 Toast,如果不是,那么我应该怎么做(扩展 Toast 然后使用一个意图来调用它?)。

4

2 回答 2

5

Toast 不被视为弹出对话框。它被认为是一种通知方法,类似于通知栏中的通知。许多应用程序在 BroadcastReceivers 中使用它,包括我自己的。迄今为止,我从未见过任何设备上显示 Toast 对性能的影响。

您应该可以很好地显示来自 BroadcastReceiver 的 Toast。

于 2013-01-24T08:32:08.213 回答
3

使用 a Toastfrom a是完全安全的BroadcastReceiver

但是要小心,Toast如果在应用程序的上下文之外显示 a 会被认为是侵入性的 - 如果从BroadcastReceiver.

为了获得更好的用户体验,请使用Notification

于 2013-01-24T08:36:45.010 回答