私が書いた場所の問題を管理するサービスがあります。2.3.3 (Galaxy S2) で完全に動作しますが、ICS (Galaxy s3) でアプリを実行すると、onDestroy メソッドが呼び出されます。両方の違いは何ですか?
編集1: 以下の行の問題。なぜ、またはどのようにサービスを強制的に破棄するのですか?
_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, this);
編集2(問題)
- GPS が無効になっている場合、GPS はオンにならず、onDestroy に進みます
- 選択したプロバイダーがネットワーク プロバイダーである場合は、再度 onDestroy に進みます。
これらすべてが 2.3.3 でどのように正しく動作するのかがわかりません。
private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
getBestProvider()
private String getBestProvider(){
//gps açıksa fine'a göre ara, değilse dandik providerı dön.
return isGpsEnabled()==true ? _locationManager.getBestProvider(getFineCriteria(), false) : _locationManager.getBestProvider(getCoarseCriteria(), false);
}