アプリに問題があります。特定の間隔で位置情報の更新を取得する必要があるため、基本的に GPS モジュールを適切に制御できる必要がありますが、これは Android OS では簡単ではありません。基本的に、5 分間隔で 2 分間 GPS をオンにする必要があります。タイミングが遅くなり、場所を 2 回取得できますが、実行時エラーでアプリがクラッシュします。スレッドごとに作成されるルーパーは 1 つだけです。タイミングはサービスクラスで行われ、うまく機能します。更新とすべてが削除され、私が抱えているこの問題だけです。
私はもともとこのエラーを抱えていました - 「Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません」というエラーを以下のコードで修正しましたが、今ではルーパーエラーが 1 つだけ発生します。
私のルーパースレッドは次のようになります(厳しくしないでください、私はAndroidに非常に慣れていません笑)
public void run() {
Looper.prepare();
setLooper(Looper.myLooper());
LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
stopLooper();
}
}, TWO_MINUTES);
Looper.loop();
t.cancel();
setLooper(null);
vb.getLm().removeUpdates(ll);
}
私が言ったように、私は新しいので、ハンドラーの使用方法がわかりません。ここStackOverflowの投稿からこのコードの一部を取得しましたが、別の方法で使用しましたが、機能しません。
本当に助けが必要です。ご回答ありがとうございます。
OK、解決策を見つけたようです。テストしてから、回答を投稿する前にさらに7時間待つ必要があります笑。閲覧と返信ありがとうございます。