Android监听网络变化练习(1)

前言

为了加强对代码和语法逻辑的理解,熟练掌握对Android网络变化的监听。

思路

首先定义一个外部类NetCahnge(名称自定),继承BroadcastReceiver,并重写父类的onReceive()方法。在onReceive()方法中通过getSystemService() 方法得到了ConnectivityManager 的实例,然后调用它的getActiveNetworkInfo() 方法得NetworkInfo 的实例,接着调用NetworkInfo 的isAvailable() 方法,就可以判断出当前网络了。最后通过Toast进行提示。
在MainActivity onCreate()方法中创建了一个IntentFilter 的实例, 并给它添加了一个值为android.net.conn.CONNECTIVITY_CHANGE 的action。
调用registerReceiver() 方法进行注册,将我们定义的外部类(NetChange)和IntentFilter都传进去, 这样前面定义的外部类(NetChange)就会收到所值为android.net.conn.CONNECTIVITY_CHANGE 的广播,这样就实现监听网络变化的功能。最后在onDestroy()中调用unregisterReceiver() 方法取消注册,因为我采用的是动态注册的方法最后要取消注册。

注:要在AndroidManifest.xml文件中加入权限


具体代码

外部类

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;

public class NetworkChang extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);;
        NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
        if(networkInfo!=null&&networkInfo.isAvailable())
        {
            Toast.makeText(context,"网络已连接",Toast.LENGTH_SHORT).show();
        }else
        {
            Toast.makeText(context,"网络断开",Toast.LENGTH_SHORT).show();
        }
    }
}

MainActivity代码

import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    private NetworkChang networkChang;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkChang=new NetworkChang();
        registerReceiver(networkChang,intentFilter);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(networkChang);
    }
}

运行结果

Android监听网络变化练习(1)_第1张图片
1.PNG

Android监听网络变化练习(1)_第2张图片
2.PNG
Android监听网络变化练习(1)_第3张图片
13.PNG

你可能感兴趣的:(Android监听网络变化练习(1))