Android 启动Service监听网络状态
来源:互联网 发布:淘宝代收货款会计分录 编辑:程序博客网 时间:2024/05/17 03:43
我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断。
这时候,我们一般情况下,两种方式进行处理。
第一: 开启服务。
第二:发送广播的形式。
建议采用方法二。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionReceiver, intentFilter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null) { return mNetworkInfo.isAvailable(); } } return false; } public boolean isWifiConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWiFiNetworkInfo = mConnectivityManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWiFiNetworkInfo != null) { return mWiFiNetworkInfo.isAvailable(); } } return false; } public boolean isMobileConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mMobileNetworkInfo = mConnectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (mMobileNetworkInfo != null) { return mMobileNetworkInfo.isAvailable(); } } return false; } public static int getConnectedType(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo(); if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { return mNetworkInfo.getType(); } } return -1; } BroadcastReceiverconnectionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) { Log.i(TAG, "unconnect"); // unconnect network }else { // connect network } } }; /*@Override protected void onDestroy() { };*/ @Override protected void onDestroy() { if (connectionReceiver != null) { unregisterReceiver(connectionReceiver); } super.onDestroy(); }
广播:源代码如下:
/** * 有网络的广播 */BroadcastReceiverconnectionReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {Log.i("yuyahao", "断网了");Message msg = new Message();msg.what = DownLoadFileUtil.isNetConnectionError;mHandler.sendMessage(msg);// unconnect network}else {// connect networkLog.i(TAG, "有来网了");}}};
注册:
//有网络的时候在注册网络监听广播IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(connectionReceiver, intentFilter);showDialog();pool.execute(mUpdateUIThread);其完整的代码如下:
方法1就是开启service的方式。代码很简单。
demo下载地址如下:
监听网络状态demo.jar
0 0
- Android 启动Service监听网络状态
- Android监听网络状态实现(BroadcastReceiver + Service)
- 监听网络,启动Service
- 【总结备用】Android监听网络状态实现(BroadcastReceiver + Service)
- android 通过Service和Receiver来监听网络状态
- android 通过Service和Receiver来监听网络状态
- android监听网络状态
- Android监听网络状态
- Android 监听网络状态
- android监听网络状态
- Android网络状态监听
- android 网络状态监听
- android网络状态监听
- Android监听网络状态
- android 监听网络状态
- Android网络状态监听
- android 监听网络状态
- android-监听网络状态
- C#面向对象设计模式纵横谈3 AbstractFactory抽象工厂模式创建型模式
- 安卓APP上传市场开通开发者权限\上传操作
- pl/sql developer 导出数据库中的表到可执行的.sql 脚本文件
- type alignment
- office 2007 卸载
- Android 启动Service监听网络状态
- Timer定时器、TimerTask、Random随机数
- JavaScript开发规范
- HDU ACM 4578 Transformation->线段树-区间修改
- Android开发好用的字符串处理工具
- webrtc callclient流程
- android 文件读取(assets、raw)
- Python 第三方 http 库-Requests 学习
- 本人在安装ADT Bundle for windows的各种问题总结