我相信这是因为有一些节电选项或者其他什么,但我无法调试它,因为它只是在电池上时失败
我有一项每60秒检查一次网页的服务 我在服务中使用asyncTask来执行此操作 我把它变成了Thread.thisThread.sleep(60000);在检查之前
我做错了什么?睡眠功能会导致服务器被android停止吗?答案 0 :(得分:5)
我有一个服务,每60秒检查一次网页,我在服务中使用asyncTask来做这个,我把它做成Thread.thisThread.sleep(60000);在检查之前
请不要那样做。
首先,使时间段可配置,包括“不要这样做,永远”选项。当开发人员编写主要用途似乎耗尽大量电池寿命的应用时,用户真的不喜欢它。保持设备唤醒并每分钟轮询一台Web服务器将耗费大量的电池寿命。这样的行为导致用户跑到他们能找到的每个任务杀手。
其次,特别是大于一分钟左右的时段,请使用AlarmManager
和[WakefulIntentService
] [1]。安排AlarmManager
在用户选择的时间段(理想情况下通过setInexactRepeating()
)调用您的应用程序。让WakefulIntentService
轮询您的网页。如果您遵循记录的WakefulIntentService
食谱,设备将保持清醒足够长的时间以便您获取数据,然后就会重新入睡。您的服务不会始终保留在内存中。您可以获得功能,并且用户可以获得更好的设备性能。