Это onStartCommand ()
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Notification creation code
telMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telMgr.listen(new PSL(), PhoneStateListener.LISTEN_CALL_STATE);
return super.onStartCommand(intent, flags, startId);
}
и класс PhoneStateListener (под классом обслуживания)
public class PSL extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNum) {
switch(state) {
case TelephonyManager.CALL_STATE_IDLE:
case TelephonyManager.CALL_STATE_OFFHOOK:
//Work1
break;
case TelephonyManager.CALL_STATE_RINGING:
//Work2
break;
}
}
}
они оба находятся в одном файле .java
У меня есть этот код в одном классе обслуживания.
, когда я звоню startService()
из основной деятельности, это работает хорошо.
но когда мое приложение уничтожается диспетчером задач, убийцей или автоматически из-за нехватки памяти на устройстве, служба перезапускается, но не работает.
когда я захожу в Настройка - Приложение - Выполнение, он показывает процесс 1 и службу 1, до / после kill.but после kill, доля памяти идет 1/10. Я попытался startForeground (), чтобы не быть легко убитым с моим уведомлением - это не сработало. (не показывает никакого уведомления)
а также попытался вернуть onStartCommand()
: START_STICKY
, START_REDELIVER_INTENT
- показывает тот же результат, есть ли способ полностью перезапустить или сделать его не убитым?