Android系統網絡連接狀態的改變會發一個廣播,注冊一個廣播接收者,實時動態的檢測網絡狀態,及時提醒用戶,優化用戶體驗。
本文僅提供WIFI 狀態的檢測作為參考,其他網絡連接方式請對比WIFI連接作出調整。
首先寫一個WifiStateBroadcast類繼承BroadcastReceiver,重寫onRecevie方法,獲取網絡連接狀態管理器,通過管理器拿到對應的網絡信息,得到網絡狀態,判斷網絡狀態,作出相應的業務邏輯.
1 public class WifiStateBroadCast extends BroadcastReceiver { 2 @Override 3 public void onReceive(Context context, Intent intent) { 4 //獲取manager 5 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 6 //獲取wifi狀態 7 NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); 8 if (state != NetworkInfo.State.CONNECTED){ 9 Toast.makeText(context,"WIFI已斷開連接",Toast.LENGTH_SHORT).show(); 10 }else if (state == NetworkInfo.State.CONNECTED){ 11 Toast.makeText(context,"WIFI已連接",Toast.LENGTH_SHORT).show(); 12 } 13 } 14 }
然后在清單文件中靜態注冊廣播
1 <receiver android:name=".broadcast.WifiStateBroadCast"> 2 <intent-filter> 3 <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 4 </intent-filter> 5 </receiver>
不要忘了添加權限
1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.INTERNET" /> 3 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
這樣當手機網絡發生變化的時候,就能及時作出處理,防止某些過於依賴的程序無法正常的工作。