2016-12-27 9 views
1

ここに私のコードがあります。 他のデバイスでコードが動作していますが、問題はredmiデバイスでのみ発生します。ロケーションサービスが動作していないアプリケーションが破壊されたときにMiデバイス

ありがとうございます。

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(); 

     } 
    } 

答えて

0

これは、redmiデバイスで発生した特定の問題です。この問題を解決する1つの方法は、redmiセキュリティアプリを開き、[権限]タブを開き、アプリの自動起動を有効にすることです。それ以外の場合は、アプリケーションの実行を継続できます。つまり、破棄されたときにアプリケーションを自動的に起動します。

+0

ありがとうございます、それは自動スタートで動作しています。 –

0

MIデバイスでは、アプリケーションが閉じられた(破棄された)ときにバックグラウンドでサービスを実行することはできません。多くのデバイス(xiomi、miなど)の権限マネージャの概念があります。

+0

返信ありがとうございますが、私はバックグラウンドでアプリを起動する権限を与えています。それでも正常に動作していない –

+0

通常、アンドロイドOSによってサービスが閉じられると、指定されていれば再起動されますが、MIデバイスではサービスは許可されずに自動的に閉じられます。 http://stackoverflow.com/questions/31355084/how-to-keep-my-app-service-keep-running-even-if-app-is-closed-from-task-manger-iで読むことができます –