首页 > 移动平台 > 详细

Android - UI线程和异步(AsyncTask)线程

时间:2014-12-09 09:20:19      阅读:321      评论:0      收藏:0      [点我收藏+]

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)线程

原文:http://blog.csdn.net/caroline_wendy/article/details/41819395

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!