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