• 网络状态监听


    网络状态监听

    定义一个广播接收器状态变化接口

    1. public class NetBroadcastReceiver extends BroadcastReceiver {
    2. public static ArrayList<NetEventHandler> mListeners = new ArrayList<NetEventHandler>();
    3. private static String NET_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
    4. @Override
    5. public void onReceive(Context context, Intent intent) {
    6. Log.i("dsc", "dsc");
    7. if (intent.getAction().equals(NET_CHANGE_ACTION)) {
    8. MainActivity.mNetWorkState = NetUtil.getNetworkState(context);
    9. if (mListeners.size() > 0)//通知接口完成加载
    10. for (NetEventHandler handler : mListeners) {
    11. handler.onNetChange();
    12. }
    13. }
    14. }
    15. public interface NetEventHandler {
    16. public void onNetChange();
    17. }
    18. }

    网络状态工具类

    1. public class NetUtil {
    2. public static final int NETWORN_NONE = 0;
    3. public static final int NETWORN_WIFI = 1;
    4. public static final int NETWORN_MOBILE = 2;
    5. public static int getNetworkState(Context context) {
    6. ConnectivityManager connManager = (ConnectivityManager) context
    7. .getSystemService(Context.CONNECTIVITY_SERVICE);
    8. // Wifi
    9. State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
    10. .getState();
    11. if (state == State.CONNECTED || state == State.CONNECTING) {
    12. return NETWORN_WIFI;
    13. }
    14. // 3G
    15. state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
    16. .getState();
    17. if (state == State.CONNECTED || state == State.CONNECTING) {
    18. return NETWORN_MOBILE;
    19. }
    20. return NETWORN_NONE;
    21. }
    22. }

    主要实现

    1. public class MainActivity extends AppCompatActivity implements NetBroadcastReceiver.NetEventHandler{
    2. public static int mNetWorkState;
    3. private NetBroadcastReceiver netReceiver;//网络状态监测
    4. private boolean netState = false;
    5. @Override
    6. protected void onCreate(Bundle savedInstanceState) {
    7. super.onCreate(savedInstanceState);
    8. setContentView(R.layout.activity_main);
    9. //注册网络监听广播
    10. regist();
    11. }
    12. @Override
    13. public void onDestroy() {
    14. super.onDestroy();
    15. Log.e("myLog", "TaskListFragment执行销毁");
    16. unregisterReceiver(netReceiver);
    17. }
    18. /**
    19. * 注册广播
    20. */
    21. private void regist() {
    22. netReceiver = new NetBroadcastReceiver();
    23. IntentFilter filter = new IntentFilter();
    24. filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
    25. registerReceiver(netReceiver, filter);
    26. NetBroadcastReceiver.mListeners.add(this);
    27. }
    28. @Override
    29. public void onNetChange() {
    30. if (getApplicationContext()== null) {
    31. return;
    32. }
    33. if (NetUtil.getNetworkState(this) == NetUtil.NETWORN_NONE) {//没有网络
    34. netState = false;
    35. Toast.makeText(this, "你的网络已断开连接,请检查网络!", Toast.LENGTH_SHORT).show();
    36. } else if (NetUtil.getNetworkState(this) == NetUtil.NETWORN_WIFI) {//wifi网络
    37. netState = true;
    38. Toast.makeText(this, "你目前是wifi网络!", Toast.LENGTH_SHORT).show();
    39. } else {//手机网络
    40. netState = true;
    41. Toast.makeText(this, "你目前是手机网络!", Toast.LENGTH_SHORT).show();
    42. }
    43. }
    44. }

    AndroidManifest注册

    1. <receiver android:name=".NetBroadcastReceiver"/>




  • 相关阅读:
    全国计算机等级考试二级教程-C语言程序设计_第10章_字符串
    网易云课堂_程序设计入门-C语言_第六章:数组_2鞍点
    arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结 .
    VS2010程序打包操作(超详细的)
    地图三要素
    创业建议
    写代码时,必须注意“异常处理”
    WPF——RenderTransform特效
    MVVM特点、源(数据)与目标(如:控件等)的映射
    使用触发器定义 WPF 控件的行为
  • 原文地址:https://www.cnblogs.com/wisemen/p/5837194.html
Copyright © 2020-2023  润新知