2016-06-15 1 views
0

てください:が正しく位置更新を停止、このコードのチャンクを考える失敗セーフ

public class Presence implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener 
{ 
      : 
      : 
    boolean pref_auto_mode; 
      : 
      : 
    private Presence(Context context) 
    { 
     this.context = context; 
     getAppSettings(); 

     gApiClient = new GoogleApiClient.Builder(context, this, this) 
       .addApi(LocationServices.API) 
       .build(); 
     createLocationRequest(); 
     if (!gApiClient.isConnecting() && !gApiClient.isConnected()) 
     { 
      gApiClient.connect(); 
     } 
    } // of constructor 

    @Override 
    public void onConnected(Bundle connectionHint) 
    { 
     Log.e(LOG_TAG, "In onConnected(), gApiClient.isConnected(): " + gApiClient.isConnected()); 
     createLocationRequest(); 
     getLocation(); 
     getSubLocality(); 

     if (pref_auto_mode) 
      startLocationUpdates(); 
    } // of onConnected() 
      : 
      : 
    private void getAppSettings() 
    { 
     // Get the user's preferences 
     APP_USER_SETTINGS =  PreferenceManager.getDefaultSharedPreferences(context); 

       :   
       :   
     pref_auto_mode = APP_USER_SETTINGS.getBoolean(Contract.PREF_AUTO_MODE, false); 
       :   
    } // of getAppSettings() 

} // of class Presence 

これは期待通りに働いています。上記と同じPresenceクラスで

ユーザーは次のような方法で、特定の設定をオフにするとき、私は停止位置情報の更新をしようとしています:私はToastをご覧ください

public void stopLocationUpdates() 
{ 
    if (gApiClient.isConnected()) 
    { 
     LocationServices.FusedLocationApi.removeLocationUpdates(gApiClient, pendingIntent); 
     LocationServices.FusedLocationApi.removeLocationUpdates(gApiClient, this); 

     Log.e(LOG_TAG, "Location tracker stopped successfully."); 

     requestingLocationUpdates = false; 
    } 
} 

。場所の更新はありません。期待どおりにすべてが静かです。しかし、デバイスの周りを何時間も移動した後、突然、位置の変更があったときにのIntentServiceのすべてのコードが忠実に実行されるように、位置の更新を再度開始します。オートモードを設定するには

、ユーザーは、アプリを起動するを持っているので、私は間違っていないよ場合Presenceクラスは、確かに(シングルトン)インスタンス化され、どんなアプリで設定されているが、そのpref_auto_modeフラグに反映されています。しかし、私はこの旗を疑う。

親切に私は、ユーザまでそのようそれを保つ私は即座に停止を研削に位置情報の更新を持参するために必要他に何を知らせる設定ONスイッチ?間違っていることや何かを逃しているのですか?

事前に感謝します。

+0

を欠いたを疑問に思うが、もう少しコントロールあなたのロケーションマネージャの通常のサービスに移るべきでしょう。 – tyczj

+0

ありがとう@tyczj、IntentServiceに 'LocationManager'がありません。私は 'IntentService'ビヘイビアが非常に必要で、場所の更新の*停止*以外はすべて正常に動作します... –

+0

私が言っているのは、インテントサービスでロケーションアップデートを取得しようとしている場合です。働くあなたがこれをやろうとしているのかどうかを明確にしてください。理由がないのであれば、インテントサービスでそれを停止しようとしていますか? – tyczj

答えて

関連する問題