我相信这是因为有一些节能选项或其他任何东西,但是我无法调试,因为它只有在电池上失败

我有一项服务,每60秒钟都会在网页上检查一次,我在服务中使用asynctask来执行此操作,然后将其制作为Thread.Thisthread.Sleep(60000);检查之前

难道我做错了什么?睡眠功能会导致服务器被Android停止吗?

有帮助吗?

解决方案

我有一项服务,每60秒钟都会在网页上检查一次,我在服务中使用asynctask来执行此操作,然后将其制作为Thread.Thisthread.Sleep(60000);检查之前

请不要那样做。

首先,使该期间可配置,包括“不执行此操作”选项。当开发人员编写其主要目的似乎是用尽大量电池寿命的应用程序时,用户真的不喜欢它。每分钟保持设备清醒和轮询Web服务器将消耗大量的电池寿命。正是这样的行为导致用户跑到他们可以找到的每个任务杀手。

第二,特别是在大约一分钟左右的时间内,请使用 AlarmManager 和[WakefulIntentService] [1]。安排 AlarmManager 在用户选择期间调用您的应用程序(理想情况下是通过 setInexactRepeating())。有 WakefulIntentService 轮询您的网页。如果您遵循记录的 WakefulIntentService 食谱,该设备将保持清醒的时间足够长,您可以获取数据,然后退缩。您的服务不会一直保持在内存中。您可以获得您的功能,并且用户可以获得更好的设备性能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top