2011-02-10 25 views
1

我必須在我的程序中手動打開網絡適配器,而在Android上,硬件需要一段時間才能啓動,最多一秒鐘。如何在等待Wifi和Bluetooth適配器在Android中啓用時停止代碼執行?

//turn on network adapters 
wifiManager.setWifiEnabled(true); 
bluetoothAdapter.enable(); 

while(wifiManager.getWifiState()!=WifiManager.WIFI_STATE_ENABLED | bluetoothAdapter.getState!=BluetoothAdapter.STATE_ON) 

    ; //no code here, just waiting for adapters to enable 

//continue execution 
getDeviceInfo(); 

我現在使用上述方法是不優雅可言,CPU被鎖定,向上在while循環。任何想法如何以更好的方式實現這一點?

回答

0

至少,你可以把它放在一個線程中(檢出AsyncTask)並在while循環中使用Thread.sleep(10)。

進一步,您可以註冊廣播事件,以便在WiFi狀態更改時收到通知。這樣,即使應用程序外部的某些內容改變了WiFi狀態,您也可以做出反應。看看BroadcastReceiver s。

+0

哦,是的,我完全忘了廣播接收機。感謝您的想法!我嘗試了AsyncTask,但是當我從AsyncTask調用視圖對象和適配器時,Android會變得很奇怪。 – 2011-02-10 08:07:41

相關問題