1

我使用以下代码来保持服务处于活动状态:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    ...
    keepServiceAlive(this, 2222);
    return super.onStartCommand(intent, flags, startId);
}
@SuppressWarnings("deprecation")
public void keepServiceAlive(Service service, int id) {
    Notification note = new Notification(0, null, System.currentTimeMillis());
    note.flags |= Notification.FLAG_NO_CLEAR;        
    service.startForeground(id, note);
}

但有时服务仍然被杀死。您能否帮我确认这段代码的正确性,或者您会提供更好的解决方案吗?

4

1 回答 1

1

您不应创建格式错误的Notification对象。Android 4.3 现在将Notification在检测到此黑客攻击时向用户显示它自己的,并且用户将被告知您的服务正在运行。如果你真的需要它出现在前台,给它一个合适的图标,让你的用户知道你的服务,并解释为什么它是必要的。您甚至可以考虑让他们决定是否通过 SharedPreferences 将服务作为前台服务运行。

请参阅CommonsWare 的这篇博客文章

于 2013-08-03T22:37:44.647 回答