我看到这个例子有Advance Task杀手,看门狗,eBay,电池小部件等程序。有一个运行后台服务监视设备活动,一个广播接收器,但有一个选项可以禁用显示的通知图标。目前我的应用程序通过调用:
完美无瑕地运行Context context = getApplicationContext();
Intent intent = new Intent(context, SomeBackGroundService.class);
context.startService(intent)
然后在我的服务中我打电话:
startForeground(NOTIFICATION_ID, notification);
现在,这些其他应用程序如何能够在没有通知图标的情况下运行长时间运行的广播接收器?我需要做什么才能禁用/设置以隐藏图标并将此功能添加到我的应用程序中?
提前致谢
答案 0 :(得分:5)
我不是这方面的专家,但我不同意接受的答案。
您的startForeground是确保您的服务继续运行的关键。
如果没有它,它可能会继续运行,但它的优先级要低得多,因此更有可能被系统杀死。
答案 1 :(得分:-1)
您的服务完全独立于是否存在通知。如果删除了行startForeground,该服务将继续运行。服务停止的唯一时间是调用context.stopService()或stopSelf()。将一些日志丢入您的服务中,您将看到它继续运行。
重写onStartCommand以确定垃圾回收后服务的行为:
@Override
public int onStartCommand(Intent intent, int flags, int startId() {
super.onStartCommand(intent, flags, startId);
doWork();
return START_STICKY;
}
START_STICKY在垃圾回收后重新创建您的服务。 START_REDELIVER_INTENT将在使用原始意图进行垃圾回收后重新创建您的服务,仅在您需要额外的意图数据时才使用此服务。
答案 2 :(得分:-3)
创建一个包含用png制作的图标的通知,高度和宽度只有1个像素,并使该像素透明。