为什么有时不执行发布到主线程的操作?

时间:2019-05-27 09:28:39

标签: java android multithreading user-interface handler

我有一个“特殊”图像和文字,显示了我的应用程序当前的最重要状态。这两个由第二线程控制。 我在主界面上通过处理程序发布了可运行文本以更改文本和图像。

但是有时候工作没有执行,但是日志显示应用程序进入了方法。

次线程

public class cWarningControl extends MainActivity implements Runnable  {
    String TAG = "cWarngin";

    @Override
    public void run() {
        while (true) {
            if (cGlobal_values.bBT_NOADAPTER) {
                mainHandler.post(new Runnable() {
                    @Override
                    public void run() {

                      Warning_image.setImageResource(R.mipmap.warnung_bt_red);
                        Warning_text.setText(R.string.warning_BT_NO_Adapter);
                    }
                });

            }else
            {
                if (cGlobal_values.bBT_GenState_on)
                {
                    if (cGlobal_values.bBT_ConState_connected)
                    {
                        mainHandler.post(new Runnable() {
                            @Override
                            public void run() {

                    Warning_image.setImageResource(R.mipmap.warnung_bt_green);

                    Warning_text.setText(R.string.warning_BT_ON_CON);
                            }
                        });

                    }
                    else {
                        mainHandler.post(new Runnable() {
                            @Override
                            public void run() {

                 Warning_image.setImageResource(R.mipmap.warnung_bt_yellow);

                 Warning_text.setText(R.string.warning_BT_ON_NOCON);
                                Log.d(TAG, "run: State on");
                            }
                        });

                    }
                }
                else
                {
                    mainHandler.post(new Runnable() {
                        @Override
                        public void run() {

                Warning_image.setImageResource(R.mipmap.warnung_bt_red);
                            Warning_text.setText(R.string.warning_BT_OFF);
                            Log.d(TAG, "run: State off");
                        }
                    });
                }
            }
            sleep(1500);
        }
    }
}

MainThread

public Handler mainHandler = new Handler(Looper.getMainLooper());

有时候工作可能没有执行吗? 我该如何摆脱呢?

0 个答案:

没有答案