Android 开发者网站上曾说过:我们不应该在工作中使用长操作UIThread
。相反,我们应该在另一个线程上进行。在这个网站上,他们仍然说:
如果 UI 线程被阻塞超过几秒(目前大约 5 秒),用户会看到臭名昭著的“应用程序无响应”(ANR)对话框。
为了检验这个说法,我做了一个证明。这是我的代码:
package com.app;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Example extends Activity{
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
textView = new TextView(this);
textView.setText("please wait");
setContentView(textView);
}
@Override
public void onResume(){
super.onResume();
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
textView.setText("end waiting !!!");
}
}
如您所见,我让当前线程 ( UIThread
) 休眠 8 秒。所以,我想,如果我运行这个应用程序,Android 会注意到:“应用程序没有响应”。但是,我没有看到任何错误。程序运行顺利(我也看到文本“结束等待”)。
那么,谁能为我解释一下我的代码。请问我做错了什么。
谢谢 :)