android记录(启动线程,脏活放后面)

来源:互联网 发布:计算机大数据方向 编辑:程序博客网 时间:2024/06/06 03:29
package com.duoduo.nasadailyimage;import android.app.Activity;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.Button;import android.widget.TextView;public class NasaDailyImageActivity extends Activity {private ProgressDialog dialog;private Handler handler;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);handler = new Handler();}public void onRefresh(View view) {dialog = ProgressDialog.show(this, "Loading", "Loading");Thread thread = new Thread() {public void run() {handler.post(new Runnable() {public void run() {TextView imageDescriptionView = (TextView) findViewById(R.id.imageDescription);imageDescriptionView.setText(getString(R.string.image_description2));dialog.dismiss();}});}};thread.start();}}


android里面,UI有一条独立的线程,如有稍微有点费时(脏活)的事儿在UI线程中出现,程序就会卡住,所以对于脏活要启动一条新的线程。

例子里面是点击一个Button后,TextView的文本会换成别的玩意儿,在此期间显示一个等待条。

从R中获得字符串用getString方法,如果不用handler的画会报一个异常android.view.ViewRoot$CalledFromWrongThreadException(

http://blog.csdn.net/moonlit1228/article/details/6399878),因为在新线程中需要有UI的操作(setText),而新线程和UI线程的交换貌似有什么说法,UI操作,必须在UI中,因此使用Handler解决这个问题。

原创粉丝点击