2011-01-10 16 views
8

私はBroadcastReceiverを、そしてonReceive()には私が何をする必要があれば何でもします。BroadcastReceiver onReceiveタイムアウト

onReceive()は、ドキュメントから、タイムアウトがあります。

考慮受信機がブロックすると 候補が

を殺される前に、システムができます 10秒のタイムアウトがあります

これは、私がデバッグモードになっているときに問題を引き起こします。 10秒以上(時には)が必要です。 10秒ですべてのデバッグを行わないと、接続が閉じられ、デバッグが停止されます。

デバッグの目的でタイムアウトを増やしたり、無効にすることはできますか?

ありがとうございました。力の終値からアプリケーションを防止するために

+0

ブロードキャストレシーバーで1秒未満の時間がかかるようなことをしているのであれば、それは間違っています。 – Falmarri

+4

下記の私のコメントを読んでください。私はDEBUGモードについて話しています。 –

答えて

11

デバッグ時にブレークポイントで一時停止している間、のDev ToolsアプリケーションをインストールしてみてくださいとデバッグのApp設定可能:

はあなたをできるようにしますがアプリケーションを デバッグに選択します。あなたは、デバッガをアタッチ にこれを設定する必要がありますが、この 値を設定すると、2つの効果がありません。

  • それはあなたが デバッグしながら、長時間 ブレークポイントで一時停止した場合、エラーをスローからAndroidのを防ぐことができます。

詳細のすべてがここにある:http://developer.android.com/tools/debugging/debugging-devtools.html

あなたonReceive方法が複雑に何かをやっている場合は、あなたのBroadcastReceiverServiceを開始し、それがonReceive内から取得するデータに沿って通過することを検討します。 Serviceは、より長い処理を行うことができます。

+1

これは正しいです。放送受信機の唯一の目的は、データを他のものに渡すことです。 – Falmarri

+1

みんな、あなたに同意します。あなたが正しいです。リリース版では、それほど長くはならないはずです。しかし、私は自分のコードを使ってデバッグしているDEBUGモードで話しています。 –

+0

"DEBUG"モードになっていても問題ありません。あなたはまだレシーバを別のコンポーネントにすぐに渡したいと思っています。これは正しい設計であり、デバッグやトラブルシューティングを簡単にするだけでなく、レシーバのタイムアウトを引き起こさないようにする(ロギングを行うか、それともサービスが長くかかるかは問わない)。 –

1

デバッグモードでもこの問題が発生しました。メインスレッドで他のブロードキャストをデバッグしていたため、別のブロードキャストが送信されていて、処理されていないことが判明しました。 Androidは自分のプロセスをANRにすると考えて、プロセス全体を終了しました。

デバッグ中に他のブロードキャストを呼び出さないようにコードを一時的に変更する必要がありました。

+0

どのようにexacltyを修正しましたか?私は同じ問題を抱えている。 – Para

+0

@Para、私はブレークポイントからデバッグしていたセクションでブロードキャストを送信したコードをコメントアウトしました。 –

関連する問題