首页 > 代码库 > Android - UI线程和异步(AsyncTask)线程
Android - UI线程和异步(AsyncTask)线程
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(); } }
Android - UI线程和异步(AsyncTask)线程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。