我编写了一项服务来管理位置问题。它完美地在 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);
}