Umgang mit Samsung SPCM Killer

In letzter Zeit haben wir ein neues Galaxy S6 mit Android 5.1.1 gekauft und wir haben einige Probleme mit dem neuen Samsung SPCM-Speichermanager, der damit geliefert wird. Der Hintergrunddienst unserer App wird aggressiv geschlossen. Obwohl START_STICKY festgelegt ist, wird er nicht neu gestartet.

Zusätzlich benötigt der Dienst nicht mehr als 5 MB RAM, aber wir landen trotzdem auf dem niedrigsten Wert des SPCM-Algorithmus und werden ausgewählt, um getötet zu werden.

Das ist unser Service:

Public class IncomingService extends Service {

    @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    return START_STICKY;

}

@Override
public void onCreate() {
    if (mPhoneListener == null) {
        mPhoneListener = new CallStateListener();
        TelephonyManager tm = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}

    /**
 * Listener for call states
 * Listens for different call states
 */
private class CallStateListener extends PhoneStateListener {

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
       // Doing something with incomingNumber
    }
}

Und im Manifest:

    <service
        android:name="com.services.IncomingService"
        android:enabled="true"
        android:priority="999" >
    </service>    

Ein Protokoll von SPCM, das unsere Dienste beendet:

Force stopping com.special.app appid=10499 user=0: SPCM kill lowestscore package!
03-18 22:48:11.280 3562-3562/? I/ActivityManager: Killing 2279:com.special.app/u0a499 (adj 8): stop com.special.app cause SPCM kill lowestscore package!
03-18 22:48:11.280 3562-3562/? W/ActivityManager: Scheduling restart of crashed service com.special.app/com.services.IncomingService in 1000ms
03-18 22:48:11.280 3562-3562/? I/ActivityManager:   Force stopping service ServiceRecord{27d2c408 u0 com.special.app/com.services.IncomingService}

Obwohl das ActivityManager-Protokoll angibt, dass ein Neustart für unseren Service neu geplant wird, wird er nie neu gestartet.

Wir haben die gleichen SPCM-Protokolle für andere Apps (Facebook, TrueCaller usw.) gesehen, aber ihre Dienste können irgendwie neu gestartet werden.

usammenfassend sind unsere Frage

Wie kann verhindert werden, dass SPCM auf unsere App als Lowestscore-Paket abzielt?Wenn wir als Ziel ausgewählt wurden, wie kann sichergestellt werden, dass unser Dienst nach dem Tod erfolgreich neu gestartet wird?Haben Sie noch andere Ideen, die uns helfen können?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage