android - 在不耗尽电池的情况下保持服务清醒

标签 android android-service alarmmanager

我有一个应用程序需要持续监听通过 wifi 传入的请求。在后台运行的服务完成这项工作。但是,此服务会在屏幕关闭一段时间后进入休眠状态。

我搜索到的解决方案是使用 AlarmManager 使其保持唤醒状态。但据说这会耗尽设备的电池电量。 那么,还有另一种方法可以做到这一点吗?

例如,Whatsapp 和 Skype 等应用程序有什么作用?它们似乎并没有消耗太多电量,但它们一直在运行服务,对吧?

此外,如果 AlarmManager 是唯一的方法,如果有人可以分享教程或示例,那将是非常好的。

最佳答案

The solution from what I have searched is to use AlarmManager to keep it awake

那也无济于事。一旦设备进入休眠状态,您的套接字连接将终止。您需要使用部分 WakeLockWifiLock 来保持设备持续开机。

But it is said that this will drain the battery of the device.

WakeLockWifiLock 肯定会耗尽电池。

So, is there another way to do this?

如果您需要使用 WiFi,则不需要。

For eg, what do apps like Whatsapp and Skype do?

当设备要休眠时,他们不使用 WiFi。一旦 WiFi radio 断电,它们就会使用移动数据,因此不需要 WifiLock。对于移动数据,传入的数据包会唤醒设备,因此您只需要在实际工作时使用 WakeLock,而不是一直使用。

不过,最好的答案是改用 C2DM。

关于android - 在不耗尽电池的情况下保持服务清醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233543/

相关文章:

android - 编辑文本 getText().toString() 返回空白

android - 如何不在每个屏幕上显示 Android 应用程序名称

java - 如何在Android上读取USB设备的数据?

android - 将服务从一个 Activity 传递到另一个 Activity

android - 在 Binder 接口(interface)中返回服务实例是否安全?

java - 在 Android 5.0+ 中短时间间隔使用重复警报的正确方法是什么?

java - 当循环到另一个列表java时尝试将元素添加到列表中

android - 如何检查之前启动的自定义自己的服务是否正在运行

android - 如何同时显示两个单独的通知?

android - 如何在 android 中使用时间选择器创建每日自定义通知?