即使使用工作线程,Android 也在 UI 线程上运行



我正在使用工作线程,如此处所述,但代码仍然阻止了 UI。如果我在 run() 方法的开头睡觉,它不会阻止 UI。问题是,这是一个从onCreate方法运行的繁重代码,但无论我做什么,我都不能让它不阻塞UI。我做错了什么?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < 1000000; i++) {
                Log.d("asdf", "asdf");
            }
        }
    }).start();
}

您没有使用 AsyncTask - 这是 Android 用来在 UI 线程之外执行长时间运行的进程的控件。

最重要的是,使用它,你会有更多的成功。

AsyncTask 安卓示例

使用 Handler to 或 .runOnUiThread(runnable) 调用 UI 线程。您也可以在没有 Runnable 的情况下执行线程,如下所示:

new Thread(){
        @Override
        public void run() {
            for (int i = 0; i < 1000000; i++) {
                Log.d("asdf", "asdf");
            }
        }
    }).start();

相关内容

  • 没有找到相关文章

最新更新