0

我正在使用工作线程,如此处所述,但代码仍然阻塞了 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();
}
4

2 回答 2

0

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

new Thread(){
        @Override
        public void run() {
            for (int i = 0; i < 1000000; i++) {
                Log.d("asdf", "asdf");
            }
        }
    }).start();
于 2013-01-22T02:14:01.177 回答
0

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

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

AsyncTask Android 示例

于 2013-01-21T22:16:10.163 回答