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