Android 广播接收器抛出多个广播
嗯。我很好奇这是否是我的代码,或者广播接收器是否在做它应该做的事情。我设置了一个广播接收器来监听wifi的变化,例如是否连接了某个网络。广播接收器工作,并在on receive方法中将信息发布到logcat中。这里的问题是,它似乎发射了多次,在我的例子中是8次。这就是它应该做的吗?有没有办法限制它开火的次数 这是原木猫Android 广播接收器抛出多个广播,android,broadcastreceiver,Android,Broadcastreceiver,嗯。我很好奇这是否是我的代码,或者广播接收器是否在做它应该做的事情。我设置了一个广播接收器来监听wifi的变化,例如是否连接了某个网络。广播接收器工作,并在on receive方法中将信息发布到logcat中。这里的问题是,它似乎发射了多次,在我的例子中是8次。这就是它应该做的吗?有没有办法限制它开火的次数 这是原木猫 07-12 13:33:21.748 8152-8152/com.apklegion.pcnotetest D/TEMP: android.net.wifi.STATE_CHA
07-12 13:33:21.748 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:21.753 8152-8152/com.apklegion.pcnotetest D/TEMP:
SSID :: "SkyNet Global Defense Network "
07-12 13:33:21.754 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:21.806 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:21.809 8152-8152/com.apklegion.pcnotetest D/TEMP: BSSID ::
4c:60:de:cf:e3:88SSID :: "SkyNet Global Defense Network "
07-12 13:33:21.810 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:21.862 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:21.865 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:21.866 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:21.918 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:21.920 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:21.921 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:21.966 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:21.969 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:21.970 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:22.013 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:22.017 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:22.018 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:22.073 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:22.075 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:22.076 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
07-12 13:33:22.386 8152-8152/com.apklegion.pcnotetest D/TEMP:
android.net.wifi.STATE_CHANGE
07-12 13:33:22.391 8152-8152/com.apklegion.pcnotetest D/TEMP: SSID :: "SkyNet
Global Defense Network "
07-12 13:33:22.392 8152-8152/com.apklegion.pcnotetest D/TEMP: Wifi is enabled
Wifi is connected
这是广播接收机类
public class MyWifiStateListener extends BroadcastReceiver {
Boolean isConnected = false;
String skynet, message;
public static boolean isConn = false;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
Log.d("TEMP", action);
assert action != null;
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getType() == ConnectivityManager.TYPE_WIFI) {
WifiManager myWifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = myWifiManager.getConnectionInfo();
String test = wifiInfo.toString();
String sid = wifiInfo.getSSID();
tv.setText(test);
int count =0;
Log.d("TEMP", "SSID :: " + wifiInfo.getSSID());
在我的主要活动类中,我注册了接收者,并在OnPause和OnResume中设置了注销和重新注册
filters.addAction("android.net.wifi.STATE_CHANGE");
super.registerReceiver(myWifiStateListener, filters);
@Override
protected void onPause() {
try {
unregisterReceiver(myWifiStateListener);
Log.i(TAG, "Unregistered broadcast receiver");
}catch (Exception e){
}
super.onPause();
}
@Override
protected void onResume() {
Log.i(TAG, "Registered broadcast receiver");
registerReceiver(myWifiStateListener,filters);
super.onResume();
}
@Override
protected void onDestroy() {
stopService(new Intent(this, MyWifiStateListener.class));
Log.i(TAG, "Stopped service");
super.onDestroy();
}
我觉得不错。我很确定设备经常检查它。。。这可能就是为什么会发生这种情况。使用shared pref存储值…如果值发生变化,则所有8个广播都会同时发生,但不会超过一段时间哦。真奇怪。流程是什么?如果用户连接到wifi,为什么要发送广播?应用程序会监听wifi连接,一旦手机自动连接,它会向我电脑上的服务器发送信号。广播用于监控哪个wifi以及何时连接。除非有另外一种方法,这种方法除了额外的广播扫描外,现在还可以用。我问你为什么想知道某人连接到哪个wifi?为什么这很重要?