我的应用程序中有一项服务,它是一个药用应用程序,该服务应该在应用程序安装的整个过程中运行而不会被杀死。
所以我尝试了几种方法,尝试使用返回START_STICKY
的常规服务但是并没有完全重新创建服务,因为它应该是。然后我决定尝试使用前台服务。
我正在创建它赢得服务onStartCommand像这样
startForeground(FOREGROUND_ID, buildForegroundNotification());
return START_STICKY;
}
private Notification buildForegroundNotification() {
NotificationCompat.Builder b = new NotificationCompat.Builder(this);
b.setOngoing(true);
b.setContentTitle("My App");
b.setContentText("Therapy is running");
b.setSmallIcon(R.drawable.ic_launcher);
return (b.build());
}
所以我有两个问题: - 前台服务可以被Android杀死吗? - 如何检查通知是否已经创建,因此每次启动服务时都不会创建通知(当Activity也在运行时,多次重新创建服务,因为它正在与它进行主动通信)
答案 0 :(得分:1)
关于第一个问题,请参阅here。
第二个问题:我想你正在使用myNotificationManager.notify(int id, Notification notification)
。 ID字段用于标识要显示的通知类型,因此为相同类型的通知设置相同的ID将使用新创建的通知替换旧通知(如果仍显示旧通知)或仅显示新的(见NotificationManager docs)。