我的想法很简单。我有一个包含多个章节的电子书应用程序。有时会将新章节上传到服务器。我希望在用户的手机中提供后台服务,从服务器提取最新章节并下载(如果有的话),可能每周或每天下载
在谷歌搜索之后,我尝试使用AlarmManager + IntentService + BroadcastReceiver,但是当用户杀死应用程序时它不起作用。我认为这是用户保存内存并在使用后杀死所有应用程序的常见操作
有没有办法将服务和应用程序拆分到不同的进程中,以便后台服务不容易被用户杀死,至少在例如对于我的手机按左按钮将查看所有正在运行的应用程序,除非他/她去设置和查看它。
谢谢!
答案 0 :(得分:0)
你有2个解决方案。更好的方法是使用Sockets
。然后,它的服务器责任是为您的Android设备发送更新。
另一种方式就是你所说的使用服务。您必须考虑一些要点才能让您的服务保持活力。 首先:不使用绑定服务。 第二:您必须在整个应用关闭时重新启动您的服务(它甚至不在后台)。您可以使用onTaskRemoved
方法在您的服务中执行此操作。它会对你有所帮助:
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent restartServiceIntent = new Intent(this, yourService.class);
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(this, 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmService.set(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 5000,
restartServicePendingIntent);
super.onTaskRemoved(rootIntent);
}
告诉我它是否对你有帮助。不要犹豫,问任何其他问题:)