2012-04-10 22 views
1

私はBroadcastReceiverを使用しています。着信SMSメッセージに基づいて電話のGPS位置を見つける必要があります。BroadcastReceiver、IntentService、GPSコールバック

私はコールバックでLocationResultを返すかなり標準的なクラスを使用していますが、私がBroadcastReceiverクラスでそれを使用すると、時間がかかりすぎてOSによって殺される可能性があります。

サービスを使用しようとしましたが、同時に2つのイベントが発生するとANRの問題が発生します。

私は、BroadcastReceiverのスレッドを使用することは災害のためのレシピであると聞いたことがあるので、それも試してみませんでした。

私はIntentServiceを使用して着信要求をキューに入れ、GPS位置探知機を処理します。私の質問は、onHandleIntentが終了したときに死ぬことがないようにコールバックでコードを使用する方法です。代わりに睡眠を使うことを考えましたが、洗練された解決策のようには見えません。

これを行うより良い方法はありますか?私はBroadcastReceiverを使用しなければならないが、15-20秒の期間にわたってGPSが位置を見つけるようにするスマートな方法が必要である。

どのようなアイデアでも大歓迎です! (ここのAndroidのnoob)。

答えて

0

サービスを使用しようとしましたが、同時に2つのイベントが発生するとANRの問題が発生します。

つまり、サービスでの作業を含め、常に避けたいアプリケーションスレッドで作業していることを意味します。 onStartCommand()のようなメソッドがメインアプリケーションスレッドで呼び出されることに注意してください。

私の質問は、onHandleIntentが終了したときに死にませんようにコールバックでコードを使用する方法です。

だから、IntentServiceはあなたの問題に対して素晴らしい答えではありません。 Serviceが必要ですが、自分のバックグラウンドスレッドで作業している場合は、完了したらサービスを停止します。

私はLocationPollerという形でこれを概念実証しています。