私はアプリケーションを開発しており、10分ごとにGPS経由で位置を追跡するサービスを使用しています。しかし、私がタイマータスクに位置リスナーを置くと、例外がスローされます。Track Gpsアンドロイドのタイマーを使用して10分ごとに
looper.prepare()
を呼び出していないスレッド内にコードを挿入できません。
誰もがこの問題に関する洞察を持っていますか?
私はアプリケーションを開発しており、10分ごとにGPS経由で位置を追跡するサービスを使用しています。しかし、私がタイマータスクに位置リスナーを置くと、例外がスローされます。Track Gpsアンドロイドのタイマーを使用して10分ごとに
looper.prepare()
を呼び出していないスレッド内にコードを挿入できません。
誰もがこの問題に関する洞察を持っていますか?
この方法は簡単で、UIスレッドを更新することができます。
new CountdownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished/1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
あなたは10分ごと locationUpdateが供給のためのサービスを開始する必要はありません、代わりにこの
mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 600000, 0, mLocListener);
これは自動的に意志のような何かをリスナーに10分ごとに更新を送信してください
これまでにルーパーのようなエラーが発生しました。つまり、あなたは他のMain UI Workerスレッドから何かをすることは許されません。
あなたが実行しているコードで、このエラーが発生します。メインUIスレッドからコードを実行します。または あなたの他のスレッドのいずれかに続いて、メインスレッドによって、あなたのメインクラスで
Handler mHandler = new Handler();
をHandlerオブジェクトを作成し、この
new Thread(new Runnable(){ public void run(){
// any of your code
mHandler.post(new Runnable(){public void run(){
// the code giving you error Looper
}});
}}).start();
ような何かを行います