如何让这段代码永远在后台运行,并始终检测是否有互联网访问(不是互联网连接)并在没有互联网访问时显示吐司?
here is我想要什么(请参阅meow meo的答案),但它是用于检测互联网
// check connectivity (Internet access)
private boolean checkConnectivity() {
System.out.println("executeCommand");
Runtime runtime = Runtime.getRuntime();
try {
Process mIpAddrProcess = runtime
.exec("/system/bin/ping -c 1 8.8.8.8");
int mExitValue = mIpAddrProcess.waitFor();
System.out.println(" mExitValue " + mExitValue);
if (mExitValue == 0) {
img_c1.setImageResource(R.drawable.index2);
return true;
} else {
img_c2.setImageResource(R.drawable.index2);
return false;
}
} catch (InterruptedException ignore) {
ignore.printStackTrace();
System.out.println(" Exception:" + ignore);
} catch (IOException e) {
e.printStackTrace();
System.out.println(" Exception:" + e);
}
return false;
}
答案 0 :(得分:2)
首先,在后台永远运行此代码是个坏主意。
而是使用BroadCastReceiver
来检查网络状态,因此它只会在网络状态发生变化时生效,
您必须为网络状态更改事件注册BroadcastReceiver
。因此,当网络安卓事件的设备发生任何变化时,您的BroadcastReceiver将监听该事件并基于此显示Toast。
好的教程:http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/