У меня есть Android класс обслуживания код, для которого заключается в следующем:Android сервис получает убит ударяя из приложения
public class LoginService extends Service {
BroadcastReceiver wifiStateChangeReciever;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("AndroidLearning", "Service onStartCommand Started.");
return Service.START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
Log.i("AndroidLearning", "Service Started.");
final IntentFilter intentFilter = new IntentFilter();
// intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
intentFilter.addAction("android.net.wifi.STATE_CHANGE");
wifiStateChangeReciever = new WifiStateChangeReciever();
this.registerReceiver(wifiStateChangeReciever, intentFilter, null, null);
Log.i("AndroidLearning", "Reciever Registered.");
}
@Override
public void onDestroy() {
Log.i("AndroidLearning", "Service Destroyed.");
this.unregisterReceiver(wifiStateChangeReciever);
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Log.w("AndroidLearning", "On Task Remove: FLAG_STOP_WITH_TASK - "
+ ServiceInfo.FLAG_STOP_WITH_TASK);
this.unregisterReceiver(wifiStateChangeReciever);
Intent restartServiceIntent = new Intent(getApplicationContext(),
this.getClass()); restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(
getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
alarmService.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 1000, restartServicePendingIntent);
Log.w("AndroidLearning", "End on task removed");
super.onTaskRemoved(rootIntent);
}
}
Он регистрирует BroadcastReciever
. Деятельность, которая начинается этот сервис имеет следующий код:
Intent intent = new Intent(this, LoginService.class);
startService(intent);
Однако всякий раз, когда активность будет прокатываются из списка задач (последняя) служба также остановлена. Я переехал на onTaskRemoved
, чтобы исправить это, но он все еще не работает, и AlarmManager никогда не запускает pendingIntent
. Я попытался использовать оба метода: set
и setExact
для AlarmManager
.
Я также попытался добавить следующие опции в <service>
теги
android:stopWithTask="false"
android:process=":remote"
, но безрезультатно.
Что я здесь делаю неправильно? Спасибо за помощь.
на Android 5.01, я пробовал отключить мое приложение - и служба была убита (она локальная и в том же процессе), но поскольку я начал ее как липкую услугу, я вижу, что Android возобновляет службу. –