【发布时间】:2014-11-25 05:32:25
【问题描述】:
我有以下广播接收器。
public class TestNetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String TAG = "TEST:";
if (intent.getAction().equals("android.net.wifi.WIFI_STATE_CHANGED")) {
Log.i(TAG, "Wifi toggled");
} else if (intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) {
Log.i(TAG, "Network connection changed");
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
Log.i(TAG, "Network connecion is:" + networkInfo.getTypeName());
Log.i(TAG, "Detail:"+networkInfo.isFailover());
}
}
}
}
当我打开和关闭 wifi 时
I/TEST:﹕ Wifi toggled
I/TEST:﹕ Network connection changed
I/TEST:﹕ Network connecion is:WIFI
I/TEST:﹕ Detail:false
I/TEST:﹕ Network connection changed
I/TEST:﹕ Network connecion is:WIFI
I/TEST:﹕ Detail:false
I/TEST:﹕ Network connection changed
I/TEST:﹕ Network connecion is:WIFI
I/TEST:﹕ Detail:false
I/TEST:﹕ Network connection changed
I/TEST:﹕ Network connecion is:mobile
I/TEST:﹕ Detail:true
I/TEST:﹕ Network connection changed
I/TEST:﹕ Network connecion is:mobile
I/TEST:﹕ Detail:true
我想要实现的是知道连接何时变为“移动”或“wifi”并且处于活动状态但只有一次。否则它会运行我的例程 3 或 4 次。我尝试更改 networkInfo.whatever() 但所有内容都重复 3 或 4 次或更多或更少次。有没有一种方法可以让我知道连接发生了变化,以及它在接收器中的某处只发生了一次?
【问题讨论】: