等到onReceive运行并停止

时间:2014-08-22 10:30:32

标签: java android broadcastreceiver

主要目的: 新近读取接入点的属性并使用它。

我尝试将自定义的BroadcastReceiver类添加到我的活动中。

如果是真的;我了解到了;意图行动后onReceive运行, (此处:WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)。

但我认为我必须等到onReceive完成后才能获得新的r11。

当我调试方法“useResults”时; 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;

                    }
                }
            }
        }

}

1 个答案:

答案 0 :(得分:1)

BroadcastReceiver是一个内部类,使用它来调用类上的方法没有任何错误或肮脏。这就是内在阶级的用途。

只需创建一个单独的方法

void doR11Results(){
         //use r11
         //modify r11
         //do something with r11
}

...并从onReceive拨打电话。超级简单!