我正在开发一个需要按时间间隔轮询特定网页的 Android 应用程序。我已经知道它确实在特定时间间隔内轮询页面,并且该时间间隔在 SharedPreference 中指定,用户可以在应用程序的设置页面中更改该时间间隔。但是,当网络连接不稳定时,就会出现问题。
例如,在手机处于休眠状态以节省电量的情况下,如何确保服务“唤醒”网络适配器并在轮询页面之前为其提供充足的连接时间?这种轮询操作可以至少每 24 小时发生一次,因此我不想因为网络中断(但在几秒钟、几分钟甚至几小时后才打开)而错过任何一个操作。
或者有时 Web 服务没有响应,或者 DNS 没有响应,或者你有什么,并且由于任何原因,即使电话在技术上已连接,它也没有得到响应。我制定了什么样的规则来稍后重试,这样当用户专门关闭他们的互联网时我不会重复重试,但我会尽快重试,如果只是一个小问题,数据可以第一次尝试后很快就收到了?
有没有这种情况的例子?最好地处理这个的逻辑是什么?
最佳答案
听 CONNECTIVITY_ACTION
这看起来不错 sample code 。这是一个 fragment :
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(mReceiver, filter);
查看关于 How can we get notified if the phone has got internet access? 的另一个问题
关于android - 使轮询 Web 服务的 Android 服务处理不良连接的技巧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3268163/