我在這個過程中有點晚了。我有一個相當多的屏幕/活動,都需要連接到互聯網,無論它的WiFi或網絡工作。我可以檢測到連接正常,但是是否需要對每個活動執行此檢查,或者是否有全局方式來爲我的應用程序執行此操作?在每個活動中檢查互聯網連接?
想到在添加大量代碼之前我會問。
我在這個過程中有點晚了。我有一個相當多的屏幕/活動,都需要連接到互聯網,無論它的WiFi或網絡工作。我可以檢測到連接正常,但是是否需要對每個活動執行此檢查,或者是否有全局方式來爲我的應用程序執行此操作?在每個活動中檢查互聯網連接?
想到在添加大量代碼之前我會問。
public class CheckNetwork {
private static final String TAG = CheckNetwork.class.getSimpleName();
public static boolean isInternetAvailable(Context context)
{
NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null)
{
Log.d(TAG,"no internet connection");
return false;
}
else
{
if(info.isConnected())
{
Log.d(TAG," internet connection available...");
return true;
}
else
{
Log.d(TAG," internet connection");
return true;
}
}
}
}
要檢查元網絡
在你的活動
if(CheckNetwork.isInternetAvailable(MainActivtiy.this)) //if connection available
{
}
每次要檢查網絡傳遞活動場景返回true,如果有其他錯誤。
Detect whether there is an Internet connection available on Android。
How to check internet access on Android? InetAddress never times out。
您可以使用類似InternetActivity
的子類Activity
,並在onResume
中檢查連接。然後,在您的應用中需要互聯網的所有活動應該是InternetActivity
的子類,並且將自動通過調用super.onResume()
或根本不覆蓋onResume
來執行檢查。
由於Tushar回答了above,從InternetActivity
等東西繼承是好的,但你不應該在onResume
檢查它,除非你使用一些服務,不斷需要互聯網連接。相反,當點擊按鈕等事件發生時,請檢查它是否轉到下一個活動;所以如果不開始另一項活動,您可以顯示敬酒以檢查互聯網連接。您應該爲需要互聯網的任何活動執行此操作,因爲整個活動很少需要連續的互聯網連接。
您可以在超類中添加這個方法:
private boolean isInternetConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
然後:
if(isInternetConnected())
//to the internet thing
else
//display toast
有你能想到的另一個有趣的解決方案,通過使用廣播接收器。所以現在你打算檢查這麼多次。而不是這樣做,只有在網絡連接更改時纔會檢查,並相應地通知網絡模塊。
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(YOUR_RECEIVER, filter);
根本沒有答案 – FARID