我有意向服务通知用户。其onHandleIntent如下:
@Override
protected void onHandleIntent(final Intent workIntent) {
for(int i = 0; i < 10; i++){
try{
Thread.sleep(2000);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
mBuilder.setContentTitle(String.valueOf(i) + "times called!");
mBuilder.setContentText("Hi, This is Android Notification Detail!");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(i, mBuilder.build());
}catch(InterruptedException ex){}
}
}
如果应用程序处于活动状态,或者即使处于活动状态,处于停止状态,此方法也可以正常工作。
但是当我杀了应用程序(向左滑动)时,服务执行停止。即使它还没有完成。我怎么能克服这个?
答案 0 :(得分:0)
即使您从最近关闭应用,也必须将IntentService
作为前台运行才能使其保持不变。
Service.startForeground
@Override
protected void onHandleIntent(final Intent workIntent) {
for(int i = 0; i < 10; i++){
try{
Thread.sleep(2000);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.mipmap.ic_launcher);
mBuilder.setContentTitle(String.valueOf(i) + "times called!");
mBuilder.setContentText("Hi, This is Android Notification Detail!");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// here you can start it as foreground
startForeground(i, mBuilder.build());
}catch(InterruptedException ex){}
}
如果您使用i
创建通知,那么您将创建多个通知(在您的情况下为10个不同),这是不好的。您可以在startForeground
中使用一些常量值而不是i。
在实际应用程序中使用IntentService之前,请确保它是正确的选择。以下是关于android Things to consider before running background tasks