我有一个应用程序,需要立即启动数据传输,所以我希望能够保持数据天线和wifi天线保持活动状态(不睡眠)。我想知道:
1)确保天线全天候24/7杀死设备硬件更快? 2)最好的方法是什么,但不要浪费太多的带宽(数据服务每月只有几兆字节的带宽)。例如。每隔X秒ping我的服务器?
答案 0 :(得分:0)
是的,保持"天线开启" (你的意思是蜂窝和WiFi接口)在使用时可怕地耗尽电池。您需要编写应用程序以避免持续耗尽电池电量。如果您经常访问网络,那么您也在咀嚼用户可能有限的蜂窝数据计划。
要成为一个好公民,您需要确保您的应用尽可能少地使用网络。肯定有几种方法可以做到这一点。我认为,最好的方法是让外部服务器通过数据更新向您的应用发送推送通知,以避免轮询。设置起来有点复杂,但非常值得。
如果您更喜欢投票,有几种选择。
您可以使用AlarmManager设置单个或定期发出的警报,无论您的应用是否正在运行,都会触发您的网络代码。当您在广播接收器的onReceive()方法中处理代码时,它可以使网络接口保持活动状态。
或者,您可以实施仅在应用运行时运行的TimerTask。另一种方法是实现Handler并以重复的间隔发布Runnable任务。
我也更喜欢RxJava,它非常强大,但对于你正在做的事情可能有些过分。有了它,您可以使用区间可观察来设置反应性序列链,以定期调用您的网络代码。
在您等待请求返回时,您可以在界面上获得WakeLock,但如果您不发布请求,这通常会有些过分且危险。
抱歉,由于有很多选择,我没有提供示例。