0

クリックするか時間間隔で更新できる DashClock 拡張機能があるので、AsyncTask を使用しています。ユーザーの位置情報が必要なので、LocationListener も使用します。onLocationChanged がトリガーされず、拡張機能が更新されないことがあります。2 週間にわたって別の方法を試してみましたが、期待どおりに機能しませんでした。

ここにコード全体があります。

onLocationChangedは 530 行目にあります

私のAsyncTaskは 290 行目にあります

requestSingleUpdateを呼び出す関数は 197 行にあります。

スレッドの問題だと確信していますが、解決方法がわかりません...

詳細が必要な場合は、喜んで提供させていただきます。

編集:私はついにそれを理解しました.新しい場所が取得される前に私のAsyncTaskが死んだので、天気の更新ロジックを変更し、今は動作します!

4

2 に答える 2

0

これは大量のコードです (すべてを読んだわけではありません)AsyncTaskが、この場合は不要であることがわかります。「バックグラウンド スレッドで更新を待つ」必要がないため、リスナーを使用します。また、全体に不必要なフラグとロジックがたくさんあるようです。私の推測では、リスナーが更新される前にリスナーを無効にしているようです。

ロケーションリスナーを有効にするだけで(「1回だけ」ではなく)、「十分な」ロケーションを待ってから、リスナーを停止する方が簡単だと思います。これらすべてについて、リスナーへの参照がnullにならないようにするだけです(完了したら登録を解除できます)。

于 2013-07-07T16:34:17.607 に答える