为什么服务会在ICS上销毁而不是以前的版本?

时间:2012-11-15 09:31:39

标签: android service

我编写了一个管理位置问题的服务。它完全在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。
  3. 我无法理解所有这些是如何在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);
    }
    

1 个答案:

答案 0 :(得分:0)

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