翻译自 http://android-developers.blogspot.jp/2009/05/painless-threading.html
当你第一次启动一个Android程序的时候,一个被称为"mian"的线程就被自动创建了。它被称为主线程或者UI线程,它是非常重要的因为负责分发事件给对应的widget(组件),还包含画图的事件。主线程贯穿用户和Android widget的交互的整个过程。例如,你触摸了屏幕上的按钮(Button),UI线程派发(dispatch)触摸(touch)事件给widget,widget设置为按下状态并向事件队列发送一个无效的请求。UI线程把这个请求弹出栈并且通知widget去重画它自己。
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
}).start();
}
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(b);
}
});
}
}).start();
}
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
private class DownloadImageTask extends AsyncTask {
protected Bitmap doInBackground(String... urls) {
return loadImageFromNetwork(urls[0]);
}
protected void onPostExecute(Bitmap result) {
mImageView.setImageBitmap(result);
}
}
1>可以通过泛型指定它的类型:参数,进度值,任务的结果值。2>doInBackGround()方法自动在工作线程中只想能够。3>onPreExecute(),onPostExecute(),onProgressUpdate()方法都在UI线程中执行。4>doInBackground()方法返回的值被当作参数传递给onPostExecute()方法。5>你能够在doInBackground()方法里任何时候调用publishProgress()方法在UI线程中去执行onProgressUpdate()方法。
原文:http://www.cnblogs.com/wingjay/p/3986287.html