目前我正在创建一个程序,该程序需要一个应该始终运行的服务。它工作得很完美,但几个小时后服务不再执行了。在服务中有一个计时器,它将收集所有可用的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无法运行..尚未找到解决方案。
答案 0 :(得分:0)
为了让您的服务永远持续下去,您需要将其作为“前台”服务。 请点击此链接Running a Service in the Foreground 我希望这会对你有所帮助。