1:在android中主线程(UI线程)不能执行耗时操作,耗时操作通常放到子线程中完成
2、在android中只能在主线程(UI线程)来操作ui控件
3、在android中,主线程不能执行访问网络的代码
所以需要采用AsyncTask异步任务
由于AsyncTask是一个抽象类,我们在使用的时候需要继承这个类,实现里边的方法,然后调用execute(),
方法AsyncTask
public class MainActivity extends Activity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView=findVIewByIds(R.id.text);
}
public void buOnClick(View v) {
new DownAstyText().execute("呼呼");
}
public <T> T findVIewByIds(int id){
return (T) findViewById(id);
}
public class DownAstyText extends AsyncTask<String, String, String>{
//子线程中执行的方法
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
Thread.sleep(10000);
} catch (Exception e) {
// TODO: handle exception
}
return params[0];
}
//主线程中执行的方法,在doInBackground方法之后执行该方法
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
if(result.equals("呼呼")){
textView.setText("下载成功");
}
}
}
}