我使用AlarmManager
进行重复的后台处理。我的应用程序反复请求数据从服务器在5秒的间隔。但过了很长一段时间,当我打开应用程序时,它崩溃了。我不明白为什么。
如何重复执行一个后台进程?我应该使用AlarmManager ,
定时器'或其他东西吗?
我的后台进程应该始终运行,即使应用程序没有焦点或不活动
我的应用程序重复请求服务器数据5秒间隔
使用手机和平板电脑等移动设备的用户不会欣赏你的行为。他们不会欣赏你对电池寿命的消耗和对带宽的消耗。设备制造商和谷歌正在继续采取积极措施来防止像你这样的应用程序出现这种行为,包括自动地,或者通过向用户提供工具来查找像你这样的不良行为应用程序并将其删除。
但是过了很长一段时间当我打开我的应用程序它崩溃了
最有可能的是,你的应用程序中有一个bug,你需要修复这个bug。由于您没有提供崩溃的详细信息,例如源代码和堆栈跟踪,因此没有人可以真正帮助您。
哪一个是最好的重复后台进程,AlarmManager,定时器或其他东西?
切换到用户可配置且不那么疯狂的轮询周期(例如,默认情况下每15分钟一次),然后将AlarmManager
与IntentService
结合使用,以便您的进程可以干净地离开
或者,当感兴趣的数据发生变化时,切换到让服务器向设备发送消息,例如通过Google Cloud Messaging。这将允许您将轮询周期降低到不频繁的时间(例如,默认情况下每小时一次),作为万一您由于某种原因错过推送消息的后备机制。
我的后台进程应该始终运行,尽管应用程序不处于焦点或活动
你的用户会不同意你的观点。他们不希望应用程序一直运行,占用系统内存。他们真的不希望应用程序像你提议的那样消耗电池和带宽。用户将摆脱你的后台进程,或者通过:
- 将应用程序从最近任务列表中删除
- 使用第三方任务管理器
- 通过设置 中的应用程序列表条目强制停止应用程序
- 卸载应用程序