我希望标题本身能说明我的问题是什么。
我有一个Service
在前台运行。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
new Intent(this, WidgetFlashReceiver.class)
.setAction(Constants.ACTION_NOTIFICATION_CLICK),
PendingIntent.FLAG_CANCEL_CURRENT);
builder.setContentIntent(pendingIntent);
builder.setOngoing(true);
builder.setAutoCancel(false);
builder.setContentTitle("Sample Service");
Notification notification = builder.build();
notification.icon = R.drawable.ic_launcher;
notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;
startForeground(NOTIFICATION_ID, notification);
return START_STICKY;
}
但是,当应用程序从最近的任务中删除时,即使它是前台服务,此服务也会被杀死。
感谢任何帮助。
答案 0 :(得分:2)
关于Android错误的这个comment,我找到了解决这个问题的解决方案!
AlarmManager almgr = (AlarmManager)MyContext.getSystemService(Context.ALARM_SERVICE);
Intent timerIntent = new Intent(MyUniqueLabel);
timerIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
PendingIntent pendingOffLoadIntent = PendingIntent.getBroadcast(MyContext, 1, timerIntent, 0);
你必须做这些事情才能发挥作用。
1。)调用addFlags和intent并将其传递给FLAG_RECEIVER_FORGROUND
2。)在PendingIntent.getBroadcast
中使用非零请求代码如果你退出任何一个步骤,它将无效。
答案 1 :(得分:1)
Android中存在一个错误,描述了您遇到的同一问题:https://code.google.com/p/android/issues/detail?id=53313
此外,SO中有很多关于此事的信息:
Foreground service being killed by Android
Service being killed while holding wake lock and after calling startForeground
答案 2 :(得分:0)
检查您的服务以查看是否已重写onTaskRemoved()方法。确保您没有在此处调用stopSelf()方法。
答案 3 :(得分:-1)
在清单文件中添加以下代码
<service
android:name="com.example.service.NameOfYourService"
android:process=":remote" >
</service>
答案 4 :(得分:-2)
使用服务onTaskRemoved()方法。