2013-01-24 39 views
2

正如你可能知道,爲的onReceive()類的BroadcastReceiver的方法的文檔說:內創建onRecieve敬酒()一個BroadcastReceiver的方法

當它運行在主線程上,你永遠不應該執行長 - 在其中運行 操作(系統 允許在考慮接收器被阻塞並且候選者 被終止之前有10秒的超時)。您無法在onReceive()的實現 中啓動彈出對話框。

我想在接收廣播時向用戶顯示Toast,但我不確定Toast是否被視爲「彈出對話框」,或者只有類Dialog中的對象是他們所指的對象。

我見過很多示例代碼,在這個函數中使用了Toast,但我不確定這是不好的做法還是對性能有很大的影響。

我想知道的是我是否應該在這個函數中創建一個Toast,如果沒有,那麼我該怎麼做(擴展Toast然後使用一個意圖來調用它?)。

謝謝!

+0

只需在onReceive()中放置你的敬酒,這樣做你就不會有任何問題,不,這不是一個壞習慣。這取決於您需要與用戶進行什麼交互。 – hardartcore

回答

4

Toast不被視爲彈出對話框。它被認爲是通知欄中通知的通知方法。許多應用程序在BroadcastReceivers中使用它,包括我自己的。直到目前爲止,我還沒有看到Toast在任何設備上顯示的性能影響。

你應該完全正確地顯示來自BroadcastReceiver的Toast。

2

BroadcastReceiver使用Toast是完全安全的。

但要小心,Toast被認爲是侵入性的,如果在應用程序的上下文之外顯示 - 如果從BroadcastReceiver使用,則可能會發生這種情況。

爲了更好的用戶體驗,請使用Notification