如何在Android中重复运行后台进程

如何在Android中重复运行后台进程,android,timer,process,background,Android,Timer,Process,Background,我正在使用AlarmManager进行重复后台处理。我的应用程序在5秒内重复从服务器请求数据。但过了很长一段时间,当我打开我的应用程序时,它崩溃了。我不明白为什么 我应该如何重复执行后台进程?我应该使用AlarmManager、Timer`还是其他什么 即使应用程序没有焦点或未处于活动状态,我的后台进程也应始终运行 我的应用程序每隔5秒重复向服务器请求数据 手机和平板电脑等移动设备的用户不会欣赏你的行为。他们不会欣赏你对电池寿命和带宽的消耗。设备制造商和谷歌正在继续采取积极措施,防止像你这样的应

我正在使用
AlarmManager
进行重复后台处理。我的应用程序在5秒内重复从服务器请求数据。但过了很长一段时间,当我打开我的应用程序时,它崩溃了。我不明白为什么

我应该如何重复执行后台进程?我应该使用AlarmManager
Timer`还是其他什么

即使应用程序没有焦点或未处于活动状态,我的后台进程也应始终运行

我的应用程序每隔5秒重复向服务器请求数据

手机和平板电脑等移动设备的用户不会欣赏你的行为。他们不会欣赏你对电池寿命和带宽的消耗。设备制造商和谷歌正在继续采取积极措施,防止像你这样的应用程序以这种方式运行,包括自动运行,以及为用户提供工具来查找像你这样的行为不良的应用程序并将其清除

但过了很长一段时间,当我打开我的应用程序时,它崩溃了

最有可能的是,你的应用程序中有一个bug。您需要修复该错误。由于您没有提供崩溃的详细信息,例如源代码和堆栈跟踪,因此没有人能真正帮助您

对于重复的后台进程、AlarmManager、计时器或其他东西,哪一个是最好的

切换到用户可配置且不太疯狂的轮询周期(例如,默认情况下,每15分钟一次),然后将
AlarmManager
IntentService
结合使用,以便您的进程可以干净地结束

或者,当感兴趣的数据发生变化时,切换到让服务器向设备发送消息,例如通过。这将允许您将轮询周期降低到不频繁的时间(例如,默认情况下每小时一次),作为一种回退机制,以防您因某种原因错过推送消息

即使应用程序未处于焦点或活动状态,我的后台进程也应始终运行

你的用户会不同意你的观点。他们不希望应用程序一直运行,从而占用系统RAM。他们真的不希望应用程序像你建议的那样消耗电池和带宽。用户将通过以下方式摆脱您的后台进程:

  • 从最近的任务列表中删除应用程序
  • 使用第三方任务管理器
  • 通过“设置”中应用程序列表中的条目强制停止应用程序
  • 卸载你的应用程序

AlarmManager
绝对可以。另一种从服务器获取新数据的方法是推送通知。如果发生崩溃,应该从logcat发布堆栈跟踪。如果你想在用户看不到应用程序的情况下工作,你应该使用
服务
。我只是在internet上搜索找到AlarmManager代码并实现它。不知道哪一个最好@Blackbelt你能给我一些好的资源,在socksHow中@Fox推送通知吗?我使用该服务进行重复的后台处理@机巧