1
我很新到Android編程所以請原諒我的無知,來自handler的狀態信號postDelayed?
我試圖做簡單的Android應用:
- 用戶按下一個按鈕,啓動postDelayed工作,然後等待上有條件的VAR
超時後postDelayer工作應發出
private final static long TIMEOUT = 10000; private Handler mHandler; final Lock lock = new ReentrantLock(); final Condition condition = lock.newCondition(); @Override protected void onCreate(Bundle savedInstanceState) { ... mHandler = new Handler(); ... } private void timeOutSignal() { mHandler.postDelayed(new Runnable() { @Override public void run() { Log.d(">> ", "---> timeout notify"); lock.lock(); try { condition.signal(); // releases lock and waits until doSomethingElse is called } finally { lock.unlock(); } } }, TIMEOUT); } public void buttonClick(View view) { timeOutSignal(); Log.i("???", "... WAIT"); lock.lock(); try { condition.await(); } catch (InterruptedException e) { // todo } finally { lock.unlock(); } Log.i("???", "... WAIT DONE !"); }
會發生什麼是buttonClick()卡住等待,我甚至沒有看到超時後「--->超時通知」消息...
我做錯了什麼?
編輯:試圖安排搞砸例如...
是的..我壞 - 我錯過了它在按鈕點擊。 我實際上在做的是試圖掃描BluetoothLowEnergy設備...所以在timeOutSignal()(壞名字,但我真的希望使片段簡單...)我打電話BluetoothAdapter startScan()和調度(與postDelayed)stopScan()10秒超時。 – V0idd