我使用以下代码使服务保持活跃状态:
@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);
}
但有时服务仍然被杀死。你能帮我确认这段代码的正确性,还是会提供更好的解决方案?
答案 0 :(得分:1)
您不应该创建格式错误的Notification
对象。 Android 4.3现在会在检测到此黑客时向用户显示其自己的Notification
,并且系统会通知用户您的服务正在运行。如果您真的需要它在前台,请给它一个合适的图标,让您的用户了解您的服务,并解释为什么它是必要的。您甚至可以考虑允许他们决定是否通过SharedPreferences将服务作为前台服务运行。