2011-02-10 2 views
1

내 프로그램의 네트워크 어댑터를 수동으로 켜야했고, Android의 경우 하드웨어 전원이 최대 1 초 정도 걸립니다.Android에서 Wifi 및 Bluetooth 어댑터를 사용하는 동안 코드 실행을 중지하는 방법은 무엇입니까?

//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)을 사용할 수 있습니다.

브로드 캐스트 이벤트에 등록하면 무선 랜 상태가 변경 될 때 알림을받을 수 있습니다. 그렇게하면 앱 외부에서 Wi-Fi 상태가 변경되는 경우에도 대응할 수 있습니다. BroadcastReceiver s을 살펴보십시오.

+0

오 예 방송 수신기에 대해 완전히 잊어 버렸습니다. 아이디어를 가져 주셔서 감사합니다! AsyncTask를 시도했지만 AsyncTask에서 뷰 객체와 어댑터를 호출하면 안드로이드가 이상하게 변합니다. –

+0

AsyncTask 스레드 내에서 UI 요소를 조작하지 않아도되지만 쉽게 만들 수있는 몇 가지 방법이 있습니다. 핸들러를 사용하여 UI 스레드와 통신 할 수도 있습니다. (btw : 답변을 좋아하고 질문에 답변 한 것으로 생각되면 동의라고 표시하십시오). –

관련 문제