2011-02-07 11 views
1

私はアプリケーションを開発しており、10分ごとにGPS経由で位置を追跡するサービスを使用しています。しかし、私がタイマータスクに位置リスナーを置くと、例外がスローされます。Track Gpsアンドロイドのタイマーを使用して10分ごとに

looper.prepare()を呼び出していないスレッド内にコードを挿入できません。

誰もがこの問題に関する洞察を持っていますか?

答えて

0

この方法は簡単で、UIスレッドを更新することができます。

 new CountdownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
    } 
}.start(); 
1

あなたは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(); 
ような何かを行います
関連する問題