07 总结ProgressDialog 异步任务

原创 2016年08月30日 20:13:06
1,ProgressDialog
    >        //使用对象  设置标题
            progressDialog.setTitle("标题");
            //设置图标
            progressDialog.setIcon(R.drawable.ic_launcher);
            //设置展示的内容
            progressDialog.setMessage("正在下载请稍等....");
            //设置样式
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            //展示
            progressDialog.show();

            

2,UI线程和工作线程

    >Ui线程也是Main线程  负责会在UI界面和事件分发

    俩个主要要素:
            >1,在Ui线程不能做阻塞操作  (在主线程阻塞超过5s程序出错  "程序无反应")
            >2,在主线程以外的线程(子线程)不能更新UI

3, 什么是异步任务
    >在子线程做耗时操作  将结果回调到主线程

4, 为什么要使用异步任务
    
    >1,在Ui线程不能做阻塞操作  (在主线程阻塞超过5s程序出错  "程序无反应")  4.0以后  不允许在主线程下载
    >2,在主线程以外的线程(子线程)不能更新UI


     * 1,创建一个类 继承AsyncTask,同时声明三个参数
     * Params:子线程执行方法里参数类型
     * Progress;子线程执行任务的进度类型 如果不想展示进度  Void
     * Result:子线程执行任务的结果类型
     *
     * 2,实现核心方法
     * doInBackground(String... params){}
     *
     * onPostExecute(byte[] result)
     *
     * 3,在主线程中执行异步请求


    >完整的AsyncTask
    public class MyAsyncTask extends AsyncTask<String, Integer, List<String>>{
        
        /**
         * 在首次执行异步任务时  调用此方法   做初始化操作
         */
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
        }

        /**
         * 在子线程中执行   做耗时操作
         */
        @Override
        protected List<String> doInBackground(String... params) {
            // TODO Auto-generated method stub
            //publishProgress(values)
            return null;
        }
        /**
         * 更新进度的方法   在doInBackground中 执行publishProgress(values)  将进度值发送给onProgressUpdate
         */
        @Override
        protected void onProgressUpdate(Integer... values) {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);
        }
        
        /**
         * 在主线程中更新UI 在执行完doInBackground之后执行 onPostExecute
         */
        @Override
        protected void onPostExecute(List<String> result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
        }
        
        
        //点击其他按钮  取消AsyncTask时  执行此方法
        @Override
        protected void onCancelled(List<String> result) {
            // TODO Auto-generated method stub
            super.onCancelled(result);
        }
        
        
        
    }



5, 设置View的显示与隐藏
    >visibility=""
        >gone:        隐藏 不占空间
        >visible      显示
        >invisible    隐藏  占空间


    >setVisibility()
        >View.GONE
        >View.VISIBLE
        >View.INVISIBLE

6,  AsyncTask注意事项:
    >1,AsyncTask实例只能调用一次
    >2,必须在Ui线程得到AsyncTask对象
    >3,AsyncTask方法 系统自动调用
    >4,数据进行交互(子线程和主线程交互)AsyncTask,否则开启一个线程就行
    >5,异步任务必须在UI线程启动



    

    
        



       
版权声明:范明毅的个人博客,欢迎转载,转载请注明出处

相关文章推荐

wininet异步操作类学习总结[2012/07/11 补充]

网上查了很多资料,也看了很多教程,自己写了一个wininet异步操作类... 多线程使用的还可以,也解决了请求拥堵问题。   参照文章: http://topic.csdn.net/u/201...

android 两种异步进程ProgressDialog的显示效果。

android 两种异步进程ProgressDialog的显示效果。 AsyncTask new Thread(new Runnable()文章可能不太严谨 仅作存档。 AsyncTask 背景 c...

Android之AsyncTask异步任务详解总结

Android 多线程----AsyncTask异步任务详解                      【正文】 本文将讲解一下Android的多线程的知识,以及如何通过AsyncTas...

AsyncTask异步任务笔记总结

一、AsyncTask概述 AsyncTask,是android提供的轻量级的异步类,作为一名安卓开发者,大家对这个类肯定不会陌生。作为抽象泛型类,它提供了Params、Progress、Resul...

PHP使用gearman扩展完成异步任务总结

PHP的gearman扩展,可以在Linux服务器上,实现PHP脚本的异步任务,甚至是分布式异步任务。在项目中一些响应慢,或者是占用时间的PHP脚本,可以用异步任务去完成,用户访问时不用等待漫长的队列...

AsyncTask异步任务总结

在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象。臭名昭著的ANR(程序无响应)使得用户体验大打折扣。 在A...

Android 异步任务 AsyncTask 的使用总结

程序终结者——异步任务 AsyncTask

异步任务AsyncTask

  • 2016-09-13 00:45
  • 1.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)