我正在构建一个应用程序,该应用程序使用重复警报和 IntentService 定期从网站检索数据。在运行更新之前,我使用 ConnectivityManager 检查网络连接。
如果 ConnectivityManager 报告没有活动网络,我希望在网络变为活动状态时再次尝试更新。使用 BroadcastReceiver 监听 ConnectivityManager.CONNECTIVITY_ACTION 似乎是最好的方法,但是注册/注销此接收器的正确方法是什么?
我在想,当 IntentService 中的网络检查失败时,我可以使用 ApplicationContext 注册 BroadcastReceiver,这样当服务停止时它就不会被取消注册。然后我可以在接收器触发时在它自己的 onReceive 方法中取消注册接收器吗?我离基地很远吗?
一些伪代码示例:
我的意图服务:
if ( !isNetworkConnected() )
getApplicationContext().registerReceiver( new MyBroadcastReceiver(), new IntentFilter( ConnectivityManager.CONNECTIVITY_ACTION );
我的广播接收器:
public void onReceive( Context context, Intent intent ) {
context.getApplicationContext().unregisterReceiver( this );