Android - UI线程和异步(AsyncTask)线程
时间:2014-12-09 09:20:19
收藏:0
阅读:323
UI线程和异步(AsyncTask)线程
本文地址: http://blog.csdn.net/caroline_wendy
Android的UI线程,也称作单线程,单线程应用串行运行所有命令,每个调用都是阻塞的。
ANR(Application Not Responding)对话框,当应用程序一定时间(通常是5秒)无响应时,Android系统将会提示终止它。
主UI在前台运行,额外的UI(如联网)在后台运行;可以使用AsyncTask类,执行多线程。
AsyncTask类主要有三个操作:
doInBackground()后台做的操作;onProgressUpdate()任务开始时的操作;onPostExecute()任务完成时的操作;
使用方法:
new PostTask().execute(status);
传递参数到doInBackground(),在其中可以执行操作;
doInBackground()的操作执行会返回String类型,至onPostExecute();
注意:doInBackground()是在其他线程运行的方法,不能调用UI;onPostExecute是在主UI运行的方法,可以更新界面。
代码:
@Override
public void onClick(View v) {
String status = mEditStatus.getText().toString();
Log.d(TAG, "onClick with status: " + status); //通过
new PostTask().execute(status);
}
private final class PostTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
YambaClient yambaClient = new YambaClient("student", "password");
try {
yambaClient.postStatus(params[0]);
return "Successfully posted";
} catch (YambaClientException e) {
e.printStackTrace();
return "Failed to post to yamba service";
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(StatusActivity.this, s, Toast.LENGTH_LONG).show();
}
}
原文:http://blog.csdn.net/caroline_wendy/article/details/41819395
评论(0)