0

我编写了一项服务来管理位置问题。它完美地在 2.3.3 (Galaxy S2) 上运行,但是当我在 ICS (Galaxy s3) 上运行应用程序时,会调用 onDestroy 方法。两者之间可能存在哪些差异?

编辑1:下一 行的问题。为什么或如何强制销毁服务?

_locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DISTANCE, this);

编辑 2(问题)

  1. 如果 gps 被禁用,它不会打开 gps 并转到 onDestroy
  2. 如果网络提供商是选定的提供商,则再次转到 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);
}
4

1 回答 1

0

它们之间最可能的区别是 RAM 管理,因为 ICS 占用更多 RAM 空间 Android 进程管理器会破坏一些服务,在您的情况下,您调用的服务就是其中之一。

于 2012-11-15T09:36:23.153 回答