Служба определения местоположения не работает на устройствах Mi, когда приложение уничтожено

Вот мой код в службе, пожалуйста, дайте мне знать, где я что-то упустил. Код работает на других устройствах, проблема только в устройствах Redmi.

Заранее спасибо.

public class AppLocationServices extends Service implements IAsyncTask{

        @Override
        public IBinder onBind(Intent arg0) {
            return null;
        }

        @Override
        public int onStartCommand(final Intent intent, final int flags,
                                  final int startId) {
            if(getBaseContext()!=null){
                SessionManagement sessionManagement = new SessionManagement(getBaseContext());
                if(sessionManagement.isLoggedIn() && !Util.IsOwner(Util.GetLocalStorage(sessionManagement))){
                    if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(ReceiverLocationAlarm.class.getName())){
                        Util.SetOnReceiverLocationIntent(getBaseContext());
                        LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
                        mLocationProvider.connect();
                    }
                    else if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(SenderLocationAlarm.class.getName())){
                        Util.SetOnSenderLocationIntent(getBaseContext());
                        DataBaseHelper dataBaseHelper = new DataBaseHelper(getBaseContext());
                        if(dataBaseHelper.getFromGpsItem().size()>0)
                            new SendLocationToServer(getBaseContext(),AppLocationServices.this).execute();
                    }
                    }else {
                    LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
                    mLocationProvider.disconnect();
                    Util.StopOnReceiverLocationIntent(getContext());
                    Util.StopOnSendLocationIntent(getContext());
                    stopSelf();
                }
            }
            return Service.START_REDELIVER_INTENT;
        }


        @Override
        public Context getContext() {
            return getBaseContext();
        }

        @Override
        public Fragment getFragment() {
            return null;
        }

        @Override
        public void OnPreExecute() {

        }

        @Override
        public void OnPostExecute(String URL, JSONObject jsonObject) {
        }

        @Override
        public void OnErrorMessage(String Message) {

        }


        @Override
        public void onDestroy() {
            super.onDestroy();

        }
    }

person Rinku kataria    schedule 27.12.2016    source источник


Ответы (2)


Это конкретная проблема, возникшая на устройствах Redmi. Один из способов решить эту проблему — открыть приложение безопасности Redmi, открыть вкладку «Разрешения» и включить автозапуск вашего приложения. В противном случае вы можете продолжать работать с приложением. т.е. запускать приложение автоматически при уничтожении

person Ciril    schedule 27.12.2016

В устройствах MI вы не можете запускать службу в фоновом режиме, когда приложение закрыто (уничтожено). Во многих устройствах (xiomi, mi и т. д.) существует концепция диспетчера разрешений.

person ʌɐɥqıɐʌ    schedule 27.12.2016
comment
Спасибо за ответ, но я разрешил приложению запускаться в фоновом режиме. даже тогда он не работает - person Rinku kataria; 27.12.2016
comment
Обычно, когда служба закрывается ОС Android, она перезапускается, если она задана, но в устройствах MI служба не запускается после закрытия автоматически (вместо разрешения). Вы можете прочитать его на stackoverflow.com/questions/31355084/ - person ʌɐɥqıɐʌ; 27.12.2016