实现由无网络连上网络自动刷新数据

最近做过一个客户端项目,客户要求如果在无网络的情况下打开客户端,在连上网络的同时需要刷新当前打开页面的数据。
思考良久,因为我的架构是http+各种请求基类+各种实现子类,那我可以用 广播+接口+Application+接口实现类实现,这就避免了比较麻烦的情况出现,下面即是全部流程。

广播(ConnectionChangeReceiver)

View Code
/**
 * 网络状态改变监听状态 调用刷新方法
 * @author YuanShuQiao
 *
 */
public class ConnectionChangeReceiver  extends BroadcastReceiver{
    
    @Override
    public void onReceive(Context context, Intent intent) {
        if(null==MyApplication.activitys||MyApplication.activitys.isFinishing())
            return;
        if(null==MyApplication.connectionListeners)
            return;
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if (networkInfo != null&&networkInfo.isConnectedOrConnecting()) 
            MyApplication.connectionListeners.restartLoad();
    }

}

Application声明当前页面接口类

public static ConnectionListener connectionListeners;

页面刷新接口类

/**
 * 网络状态改变调用接口
 * @author YuanShuQiao
 *
 */
public interface ConnectionListener {
    public void restartLoad();
}

请求基类实现页面刷新接口类

public class StLoadableActivity extends Activity implements StTaskListener ,ConnectionListener

重写刷新接口方法

public void restartLoad() {
        //代码自理
    }

主配置文件声明相关广播

<receiver android:name="xxx.xxx.ConnectionChangeReceiver"   
             android:label="NetworkConnection">   
              <intent-filter>   
                  <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>   
              </intent-filter>   
          </receiver>

相关权限依据个人需求酌情添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值