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线程启动
     
      
         
         
 
转载于:https://www.cnblogs.com/muyuge/p/6152285.html