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

时间:2014-06-19 14:26:46

标签: android timer process background

我正在使用AlarmManager进行重复的后台处理。我的应用程序以5秒的间隔重复从服务器请求数据。但经过一段时间,当我打开我的应用程序时,它会崩溃。我无法弄清楚原因。

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

即使应用没有焦点或不活跃,我的后台流程也应该始终运行。

1 个答案:

答案 0 :(得分:1)

  

我的应用程序以5秒的间隔反复请求服务器获取数据。

拥有手机和平板电脑等移动设备的用户不会欣赏您的行为。他们不会欣赏您的电池寿命消耗和带宽消耗。设备制造商和Google正在继续采取积极步骤,以防止像您这样的应用程序以这种方式行事,既可以自动执行,也可以通过为用户提供工具来查找像您这样的不良应用程序并摆脱它们。

  

但是经过很长一段时间我打开我的应用程序崩溃

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

  

哪个是重复后台进程,AlarmManager,Timer或其他什么的最佳选择?

切换到用户可配置且不太疯狂的轮询周期(例如,默认情况下每15分钟一次),然后将AlarmManagerIntentService结合使用,这样您的流程就可以彻底消失

或者,切换到让服务器在感兴趣的数据发生变化时向设备发送消息,例如通过Google Cloud Messaging。这将允许您将轮询周期丢弃到不经常发生的事情(例如,默认情况下每小时),作为回退机制,以防您因某种原因错过推送消息。

  

我的后台流程应始终运行,但应用程序未处于焦点或活动状态

您的用户不同意您的意见。他们不希望应用程序一直运行,占用系统RAM。他们真的不希望应用程序以您提议的方式消耗电池和带宽。用户将通过以下方式摆脱您的后台进程:

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