即使在低内存压力下,这是保持服务活着的正确技巧吗?

时间:2013-08-03 22:31:35

标签: android android-service low-memory

我使用以下代码使服务保持活跃状态​​:

@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);
}

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

1 个答案:

答案 0 :(得分:1)

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

请参阅this blog post by CommonsWare