- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个应用程序需要持续监听通过 wifi 传入的请求。在后台运行的服务完成这项工作。但是,此服务会在屏幕关闭一段时间后进入休眠状态。
我搜索到的解决方案是使用 AlarmManager 使其保持唤醒状态。但据说这会耗尽设备的电池电量。那么,还有另一种方法可以做到这一点吗?
例如,Whatsapp 和 Skype 等应用程序有什么作用?它们似乎并没有消耗太多电量,但它们一直在运行服务,对吧?
此外,如果 AlarmManager 是唯一的方法,如果有人可以分享教程或示例,那将是非常好的。
最佳答案
The solution from what I have searched is to use AlarmManager to keep it awake
那也无济于事。一旦设备进入休眠状态,您的套接字连接将终止。您需要使用部分 WakeLock
和 WifiLock
来保持设备持续开机。
But it is said that this will drain the battery of the device.
WakeLock
和 WifiLock
肯定会耗尽电池。
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/
我是一名优秀的程序员,十分优秀!