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スイッチ?間違っていることや何かを逃しているのですか?
事前に感謝します。
を欠いたを疑問に思うが、もう少しコントロールあなたのロケーションマネージャの通常のサービスに移るべきでしょう。 – tyczj
ありがとう@tyczj、IntentServiceに 'LocationManager'がありません。私は 'IntentService'ビヘイビアが非常に必要で、場所の更新の*停止*以外はすべて正常に動作します... –
私が言っているのは、インテントサービスでロケーションアップデートを取得しようとしている場合です。働くあなたがこれをやろうとしているのかどうかを明確にしてください。理由がないのであれば、インテントサービスでそれを停止しようとしていますか? – tyczj