在BroadcastReceiver的onReceive()方法中创建Toast

时间:2013-01-24 08:28:40

标签: android broadcastreceiver toast

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

  

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

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

我见过许多代码示例,其中Toast在此函数中使用,但我不确定这是不好的做法,还是性能影响很大。

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

2 个答案:

答案 0 :(得分:4)

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

你应该很好地从BroadcastReceiver展示Toasts。

答案 1 :(得分:2)

使用Toast中的BroadcastReceiver非常安全。

但请注意,如果在您的应用程序的上下文之外显示Toast被认为是侵入性的 - 如果从BroadcastReceiver使用,则会发生这种情况。

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