気になって試してみました。
結果、onReceive()の中にsleep()をいれるとToast表示開始のタイミングが遅れてあっという間に消えるような動作になります。
sleep()を取り除くと、通常の表示時間は変わりませんでした。
LENGTH_LONGで3秒くらいではないかと思います。
恐らく、onReceive()内の「何らかの処理」に時間がかかっているのではないかと思います。
何らかの処理をコメントアウトしてみると問題を切り分けられるかと思います。
ちなみに、onReceive()内にsleep(4000)をいれるとToastは表示されませんでした。
onReceive()で重たい処理は避けるのが前提ということで。
ではでは。
2011年11月15日13:00 KS <mail.ks...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
--
awwa <aww...@gmail.com>
Twitter http://twitter.com/awwa500
Blog http://awwa500.blogspot.com/
2011年11月16日0:13 KS <mail.ks...@gmail.com>:
いただいたコードですが、自分の環境ですとやっぱりToast即消えになってしまいました。
(端末によってAndroidのパラメータが微調整されていたりするのかも・・・?)
その後、自分もいろいろと調べ物をしたところ、
・そもそも、BroadcastReceiverは短時間(10秒)くらいの処理をひっそり
やるためのもの。重いこと、目立つことはさせるべきでない。
というような情報にたどり着きました。
自分の使い方がそもそも悪かったと諦めるしかなさそうです。
----
↑の調べ物と平行して、ご紹介いただいたServiceについても勉強してみました。
で、さっそく処理をServiceにて実装しなおしたところ、今度は一発解決!
無事に長時間Toastが実現できました。
いやー、長かった、、そのぶん喜びもひとしおです。
まだまだひよっこですが、今回の教訓を経て、実現したい機能と実装への落とし込み方について
少なからず理解が深まってきたように思います。
いろいろとご教示いただき、本当にありがとうございました。