【问题标题】:How will UI changes be processed in the onClickListener before starting a new activity in Android?在 Android 中启动新活动之前,如何在 onClickListener 中处理 UI 更改?
【发布时间】:2011-01-17 20:45:45
【问题描述】:

我一直在此论坛中搜索,但找不到任何问题的答案。我有以下问题:

我有一个图像视图和两个文本,我想在加载下一个活动之前更改选择的颜色以显示视觉反馈。

@Override
public void onClick(View v) {
   openFormOverviewButton.setColorFilter(0x22FFFFFF, Mode.SRC_ATOP);
   openFormOverviewTitle.setTextColor(0xFF00851B);
   openFormOverviewText.setTextColor(0xFF00851B);
   Intent tki = new Intent();
   tki.setClass(getApplication(), DataCollectorFormOverviewActivity.class);
   startActivity(tki);
}

我希望更改按钮和文本,然后开始新的活动。但是,文本没有改变,活动开始。如果我在 UI 线程 (runOnUiThread(new Runnable() {...}) 上调用可运行的三行代码,那么更改会在活动启动之前应用。这实际上很奇怪,因为 onClick 方法是在主线程又名 UI 线程。

这是否意味着对 UI 线程的更改不会立即在 UI 线程上执行?还是我做错了什么?

最好, 亚当

【问题讨论】:

    标签: android user-interface listener ui-thread


    【解决方案1】:

    正确。对 UI 元素的更改不会立即执行。它们会在下次 UI 循环运行时执行,也就是在您释放控制之后。这就是为什么您不能在 UI 线程上执行昂贵操作的原因。

    【讨论】:

    • 感谢您的回答。只是为了进一步澄清:所以当我在 UI 线程 (runOnUIThread) 上放置一个 Runnable 时,它​​将作为一个自己的循环放在线程上并在此循环之前执行?我真的很想理解它......干杯!
    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2023-03-04
    相关资源
    最近更新 更多