3

私のAndroidアプリには、GPSをチェックして緯度と経度を取得するスプラッシュスクリーンがあります。ユーザーが GPS をオンにしてアプリを実行すると、位置情報が修正されるまで待機しません。アプリはエラー ダイアログを表示して終了するだけです。そのため、ゼロより大きい緯度と経度まで実行を待機するコードを挿入しました。しかし、これは機能していません。待って待っているだけです。どんな助けでも大歓迎です。

これは私のコードです

    if(gps.getLatitude()==0.0&&gps.getLongitude()==0.0){
    while(gps.getLatitude()>0.0&&gps.getLongitude()>0.0){
    try {
    new Thread() {
     public void run() {
       try{
     // calling background Async task to load Google Places
     new LoadPlaces().execute();
     } 
        catch (Exception e) {
         Log.e("inside thread", e.getMessage());
    }
                                                                       }
   }.wait();
  } catch (InterruptedException e) {
 // TODO Auto-generated catch block
    e.printStackTrace();
 }
    }
    }
   else{
 // calling background Async task to load Google Places
 new LoadPlaces().execute();
   }
4

2 に答える 2

2

UI スレッドは、次のようなブロッキング呼び出しを実行しないでください。これを行うThread.wait()と、スレッド全体がフリーズし、アプリケーション応答なし (ANR) ダイアログ (またはデッドロック、または終了) が発生します。Processes and ThreadsKeeping Your App Responsiveに関する Android デベロッパー ガイドを読んでください。

次に、アプリの位置情報を認識させるガイド、特に位置情報更新の受信をお読みください。これは、最後の既知の場所がある場合はそれを取得し、LocationListenerアップデートを受信するために を実装する方法を説明しています。

于 2013-05-28T05:16:41.353 に答える