В последнее время мы приобрели новый Galaxy S6 с Android 5.1.1, и у нас возникли проблемы с новым менеджером памяти Samsung SPCM, который поставляется вместе с ним. Он агрессивно закрывает фоновый сервис нашего приложения, который, хотя и установлен на START_STICKY, не перезапускается.Работа с Samsung SPCM killer
Кроме того, услуга занимает не более 5 МБ ОЗУ, но все же мы как-то получаем наименьший балл алгоритма SPCM и выбираем, чтобы быть убитым.
Это наш сервис:
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
}
}
И в манифесте:
<service
android:name="com.services.IncomingService"
android:enabled="true"
android:priority="999" >
</service>
журнал SPCM убийства наших услуг:
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}
Даже если журнал ActivityManager утверждает его перенастраивает перезагрузку для нашего сервиса, он никогда не перезапускается.
Мы видели те же журналы SPCM, что и другие приложения (Facebook, TrueCaller и т. Д.), Но их службы каким-то образом перезапускаются.
Так, чтобы подвести итог, наши вопросы:
- Как предотвратить SPCM от ориентации нашего приложения в пакете lowestscore?
- Если мы были нацелены, как убедиться, что наш сервис будет успешно перезапущен после того, как вас убили?
- Любые другие идеи, которые могут нам помочь?
У меня такая же проблема. Вы это исправили? – kakopappa
Нам удалось, но попытались многое, мы не совсем уверены в том, что помогло :) Среди вещей было: Снижение потребления памяти нашего приложения. Мы предполагаем, что SPCM не нацеливает нас больше. Удачи тебе! – Nom1fan