您可能知道,BroadcastReceiver类的onReceive()方法的文档说:
当它在主线程上运行时,你永远不应该执行长时间运行 其中的操作(系统超时10秒) 允许在考虑接收器被阻止和候选人之前 被杀死了。您无法在实施中启动弹出对话框 onReceive()。
我希望在收到广播时向用户显示Toast,但我不确定Toast是否被视为“弹出对话框”,或者只是类Dialog中的对象是他们所指的。
我见过许多代码示例,其中Toast在此函数中使用,但我不确定这是不好的做法,还是性能影响很大。
我想知道的是我是否应该在这个函数中创建Toast,如果没有,那么我应该怎么做(扩展Toast然后使用intent来调用它?)。
答案 0 :(得分:4)
Toast不被视为弹出对话框。它被认为是一种通知方法,如通知栏中的通知。许多应用程序在BroadcastReceivers中使用它,包括我自己的。到目前为止,我从未见过任何设备上显示Toast的性能影响。
你应该很好地从BroadcastReceiver展示Toasts。
答案 1 :(得分:2)
使用Toast
中的BroadcastReceiver
非常安全。
但请注意,如果在您的应用程序的上下文之外显示Toast
被认为是侵入性的 - 如果从BroadcastReceiver
使用,则会发生这种情况。
为了获得更好的用户体验,请使用Notification。