Android服务进程在数小时后被杀死

时间:2014-04-25 07:28:42

标签: android service process

目前我正在创建一个程序,该程序需要一个应该始终运行的服务。它工作得很完美,但几个小时后服务不再执行了。在服务中有一个计时器,它将收集所有可用的WiFi网络并将其发送到服务器。

该服务无法使用后,我导航到在Android中执行的应用我看到我的应用“0 process and 1 service”(Facebook,例如,说'{{1} }“)。这意味着该进程正在被杀死,因此该服务不再运行。我的问题是如何防止这种情况或如何解决这个问题?我的活动已绑定到服务器,而“1 process and 1 service”则返回“onStartCommand”。

我还阅读了关于START_STICKY的内容,但如果我理解得很好,这将每隔x秒启动一次服务。我想要的是一个服务,直到我说它或者在Android系统杀死进程后重新启动时才会停止运行。

修改 我不想让它成为一个前台服务,一种在停止服务时重启我的服务的方法对我来说很好。前台服务意味着通知栏,这不是我想要的。

修改2

我现在正在使用一个警报管理器来检查它是否正在运行:

AlarmManager

我的接收者:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    Intent broadcast_intent = new Intent(this, RunChecker.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  broadcast_intent, 0);

    Calendar cal = Calendar.getInstance();
    if (cal.get(Calendar.SECOND) >= 1)
        cal.add(Calendar.MINUTE, 1);
    cal.set(Calendar.SECOND, 1);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 300*1000, pendingIntent);

我知道代码看起来很糟糕,但它是用于测试的,如果它按照我想要的方式工作,我会重写它。如果有其他解决方案或解决方案肯定会有效,请分享。

修改编号3

似乎编辑2无法运行..尚未找到解决方案。

1 个答案:

答案 0 :(得分:0)

为了让您的服务永远持续下去,您需要将其作为“前台”服务。 请点击此链接Running a Service in the Foreground 我希望这会对你有所帮助。