主要目的: 重新读取接入点的属性并使用它。
我尝试将自定义 BroadcastReceiver 类添加到我的 Activity 中。
如果这是真的;我了解到; onReceive
在 Intent 操作之后运行,
(此处:WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
)。
但我认为我必须等到 onReceive
完成运行才能获得新的 r11。
当我调试方法“useResults”时; “使用 r11,修改 r11”行首先运行,一段时间后 onReceive
开始运行。
public class MainActivity extends ActionBarActivity implements OnTouchListener{
int r11=0;
public void useResults(){
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifi.startScan();
//use r11
//modify r11
//do something with r11
}
@Override
protected void onPause() {
unregisterReceiver(receiverWifi);
super.onPause();
}
@Override
protected void onResume() {
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
wifiList = mainWifi.getScanResults();
for (ScanResult result0:wifiList) {
String ssid0 = result0.SSID;
if(ssid0.compareTo("anID")==0){
r11=result0.level;
}
}
}
}
}
最佳答案
BroadcastReceiver
是一个内部类,使用它调用类上的方法没有任何错误或肮脏。这就是内部类的用途。
只需创建一个单独的方法
void doR11Results(){
//use r11
//modify r11
//do something with r11
}
...并从onReceive
调用它。 super 简单!
关于java - 等待 onReceive 运行并停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25444927/