记app断网广播展示布局

版权声明:本文为博主原创文章,未经博主允许不得转载。

这篇文章主要有两个部分,一个是activity中的断网广播处理,一个是fragment中的广播断网处理。

可能记得不是很正确,但是我一定要把它记录下来,以备自己以后的总结和回忆,不过这方法都是现在我在app中应用的,行的通的处理办法。

先来看一看,qq的。

这里写图片描述

车来了。

这里写图片描述

再来看一下,我们的。

这里写图片描述

其实这些都是大同小异的。只是加载的错误布局不一样而已。

一、activity中的断网广播处理:

我们需要ConnectivityManager,ConnectivityManager主要管理和网络连接相关的操作 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。

我们想访问网络状态,首先得添加权限,其中 NetworkInfo类则包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则能代表 连接成功与否状态。

定义网络广播:`

//广播
private ConnectivityManager mConnectivityManager;
private NetworkInfo netInfo;

//广播:网络判断操作
private BroadcastReceiver myNetReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

            mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            netInfo = mConnectivityManager.getActiveNetworkInfo();
            if (netInfo != null && netInfo.isAvailable()) {
                //网络连接
                String name = netInfo.getTypeName();
                if (netInfo.getType() == ConnectivityManager.TYPE_WIFI || netInfo.getType() == ConnectivityManager.TYPE_ETHERNET || netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                    //3g网络
                    //清数据,对数据进行操作

                        mRefreshLayout.beginRefreshing();
                }
            } else {
                //网络断开 展示网络提示布局

            }
        }

    }
};` 

进行动态注册与解绑

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_carfile_list_layout);
        initView();
        //网络广播注册
        IntentFilter mFilter = new IntentFilter();
        mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(myNetReceiver, mFilter);

    }

   @Override
    protected void onDestroy() {
        super.onDestroy();
        if (myNetReceiver != null) {
            unregisterReceiver(myNetReceiver);
        }
    }

二、fragment中的断网处理:

它的使用方法,更activity的使用方法是差不多的,只是注册与绑定是在对应的不同生命周期中。

定义网络广播:

    //广播
    private ConnectivityManager mConnectivityManager;
    private NetworkInfo netInfo;

    //广播:网络判断操作
    private BroadcastReceiver myNetReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            String action = intent.getAction();
            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

                mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                netInfo = mConnectivityManager.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isAvailable()) {
                    //网络连接
                    String name = netInfo.getTypeName();
                    if (netInfo.getType() == ConnectivityManager.TYPE_WIFI || netInfo.getType() == ConnectivityManager.TYPE_ETHERNET || netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                        //3g网络
                        //清数据,对数据进行操作

                            mRefreshLayout.beginRefreshing();
                    }
                } else {
                    //网络断开 展示网络提示布局

                }
            }

        }
    };` 

进行动态注册与解绑

 @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //网络广播注册
        IntentFilter mFilter = new IntentFilter();
        mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        getActivity().registerReceiver(myNetReceiver, mFilter);

    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        //动态解绑广播
        if (myNetReceiver != null) {
            getActivity().unregisterReceiver(myNetReceiver);
        }

    }

布局文件就不贴出来了!!!!!

猜你喜欢

转载自blog.csdn.net/zr940326/article/details/52903539