2017-07-27 4 views
0

私のアプリにはサービスがあります。このサービスは、最近のタスクリストから削除した後に再起動する必要があります。 APIレベル25以降ではサービスが再開されますが、25以上のバージョンではサポートされません。この問題にお手伝いし、すべてのOSバージョンと互換性のあるサービスを再開する最善の方法を知りたいです。APIレベル25(Nougat)以上のデバイスでSTART_STICKYを使用してサービスが再開しない

public class XMPPMainService extends Service { 

    private static final String TAG = "XMPPMainService"; 

    private static final int RECONNECT_TRY_INTERVAL_MS = 900; // 5 Seconds 

    private PendingIntent pendingIntent; 


    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Log.e(TAG, " onCreate "); 
    } 

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

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Logger.LOGD(TAG, "onDestroy: "); 
     XMPPManager.shutdown(); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     XMPPManager.getInstance(getApplicationContext()); 
     return START_STICKY; 
    } 
} 

マニフェストファイル:

<service 
     android:name="com.chatmodule.xmpp.XMPPMainService" 
     android:enabled="true" 
     android:stopWithTask="false" 
     android:exported="false" />` 

答えて

3

は、あなたのサービス・クラスでこのコードを追加します - それは働いたS.M @

@Override 
public void onTaskRemoved(Intent rootIntent){ 
    Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass()); 
    restartServiceIntent.setPackage(getPackageName()); 


    PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); 
    AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
    alarmService.set(
      AlarmManager.ELAPSED_REALTIME, 
      SystemClock.elapsedRealtime() + 1000, 
      restartServicePendingIntent); 
    super.onTaskRemoved(rootIntent); 
} 
+0

ちょっと感謝を! –

関連する問題