0

我想开发一个项目,在这个项目中我将一直使用互联网,当互联网连接消失时,用户会收到警告并暂停屏幕。当互联网可用时,用户将能够从应用程序的先前状态继续。我是 android 编程新手。我正在考虑使用 THREADS ,但我不确定。我应该使用线程还是您有什么建议?我会感谢你的意见。

4

3 回答 3

3

例如,您需要检查是否Connection在某些自定义间隔中可用。所以你可以使用这段代码:

private boolean isConnectionAvailable() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }

检查连接是否可用。如果它会返回false,那么你可以表现出意思AlertDialog或其他东西。

然后你需要添加权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

并且为了在某些间隔内检查它,您可以将其用于您的目标AlarmManager,这意味着ThreadsTimerTask

于 2012-07-08T13:43:50.210 回答
1

更好的解决方案是为ConnectivityManager.CONNECTIVITY_ACTION. onReceive()每次连接发生任何变化时都会调用。有一个ConnectivityManager.EXTRA_NO_CONNECTIVITY字段告诉您该连接目前不可用。您可以检查其值并按照您的逻辑要求继续。希望这可以帮助。

于 2012-07-08T13:52:18.330 回答
0

这是您通常检查 Internet 连接的方式Android

private boolean checkInternetConnection() 
{
ConnectivityManager manager = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);

boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();

boolean gprs=manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

if (is3g || isWifi) 
{
    Log.v(TAG,"3G/WIFI connection is present");
    return true;
}
else if(gprs)
 { 
     Log.v(TAG,"gprs connection is present");
     return true;
 }

 return false;

}

您需要在您的AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

我认为你不需要Threads为此使用。

有关更多信息,请参阅适用于 Android 的 ConnectivityManager

于 2012-07-08T13:45:34.610 回答