Android UI更新和运行后台任务

时间:2017-01-01 21:25:56

标签: java android

我是Android Studio的新手,甚至还在编写Java。我是一个嵌入式程序员,使用非常低级别的C来编程设备,所以这里......

我在我编写的状态机中使用了以下代码,我正在努力确保我有一个清晰的逻辑序列来处理Android设备上对BLE服务的连接/断开请求:

            this.stateTxt.setText(R.string.state_ConnectionScanning);
            this.connectBtn.setText(R.string.button_disconnect);
            this.connectBtn.setEnabled(false);
            myBleScanner.flushPendingScanResults(myBleCallback);
            myBleScanner.startScan(myBleCallback);

            myTimerHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    ...
                }
            },this.SCAN_PERIOD);
            if(scanSuccessful) {
                theNewState = ConnectionStateList.ConnectingState;
            }
            else {
                theNewState = ConnectionStateList.InitializeState;
            }

我的问题是,在我调用myTimerHandler()之前执行的语句(谁的回调处理BLE设备的扫描)总是在计时器超时后执行。他们通过将文本写入Button对象并更新TextView对象以进行可视化和调试来更新UI。

在调用计时器和后续调用Android服务之前,是否必须强制更新UI?有没有办法运行较少的重要后台任务,以确保首先更新UI?或者(我意识到这是更合理的问题)我的代码是错误的并且我做了一些完全错误的事情?

我想指出,直到我通过状态机进入这一点,所有Button和Textview对象的更改都能正常工作。

干杯!!

0 个答案:

没有答案