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

时间:2013-01-21 22:13:20

标签: android multithreading user-interface

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

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();
}

2 个答案:

答案 0 :(得分:0)

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

最重要的是,使用它,您将获得更多成功。

AsyncTask Android example

答案 1 :(得分:0)

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

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