我开发了一个应该在某个时间提醒我的应用程序。因此,我实现了一个启动通知的IntentService。问题是,当应用程序处于前台或至少在后台打开时,将创建通知。当我通过任务管理器关闭应用程序时,通知不再运行。
我使用了错误的服务吗?或者我必须创造一些东西吗?
意向服务类中的:
private static final String serviceName = "sebspr.de.deadlines.DeadLineService";
public DeadLineService() {
super(serviceName);
}
@Override
protected void onHandleIntent(Intent intent) {
Context ctx = getApplicationContext();
Intent intent = new Intent(ctx, DeadLineService.class);
PendingIntent pIntent = PendingIntent.getActivity(ctx, 0, intent, 0);
String title = getTitle(list.size());
String text = getText(list);
Notification noti = new Notification.Builder(ctx)
.setContentTitle(title)
.setContentText(text).setSmallIcon(R.mipmap.ic_notfi)
.setContentIntent(pIntent)
.build();
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
// hide the notification after its selected
noti.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, noti);
}
在MainActivity中:
Intent msgIntent = new Intent(this, DeadLineService.class);
startService(msgIntent);
更新
考虑到我的实际问题,解决方案是看看ArlarmManager。 IntentService在这里是错误的方式。我在这里找到了一个很好的教程:AlarmManger Example
答案 0 :(得分:1)
实际上你可以尝试让你的应用程序在被杀后保持活着,但它可能会让你的用户感到烦恼......所以,请注意......
答案 1 :(得分:1)
您不应该担心用户通过任务管理器查杀应用程序。如果发生这种情况,你真的不应该自动开始备份。它不是一种用户友好的做事方式。
您应该担心的是系统重启,在这种情况下,您可以注册您的应用以在设备开启时收到通知。
查看see example答案,了解有关在手机开机时启动服务的详细信息。
同时开始使用您的服务this
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}