一、线程


1、UI线程

a、Handler handler = new Handler();

      Runnable runnable = new Runnable(){

      public void run(){

      }

      };

   handler.post(runnable);


b、Handler handler = new Handler(){

      public void handlermessage(Message msg){

      }

      };

      handler.sendmessage();

  


二、新线程

a、Thread thread = new Thread(Runnable(){

    public void run(){

           }

    ).start();

      

b、HandlerThread handlerthread = new HandlerThread("handler_Thread");

      handlerthread.start();

      MHandler  mhandler = new Handler(handlerthread.getLooper()) ;

      Message msg =  hangdler.obtainMessage();

      msg.sendToTarget;

  

      class MHandler extends Handler{

      handleMessage

      }  


c、AsyncTask

步骤:

①实例化AsyncTask:

实例化AsyncTask然后通过task.exec(pamas);传进去参数,这个参数列表是动态的,可以是一个也可以使多个,长度可变。

  AsyncTask,第一个参数会传进去这个方法doInBackground(params),第二个参数是数据更新的值,第三个是处理事务返回的结果。

②onPreExecute方法:

这个方法没有参数,也没有返回值,可以在这个方法里,做一些提醒。比如show一个Dialog,或者弹个Toast告诉用户开始下载啦。

③doInBackground(params)方法:

进入AsyncTask内部结构,首先将执行reslut doInBackground(params)方法,这个方法将处理耗时事务,exec()的参数将会传进这个方法做参数,而返回值将会作为onPostExecute()的参数。如果要更新进度的话,需执行publicProgress()方法。

④onProgressUpdate(values)方法:

这个方法的参数必须在doInBackground()方法里执行publicProgress()方法,这个方法将会把参数传递进onProgressUpdate()方法里,然后可以在这个方法做一些ui上的更新展示,比如进度条的值就可以通过这个values值动态改变。

⑤onPostExecute(result)方法:

这里就是事务处理完毕的走的方法,doInBackground方法执行的结果将传到这里,如果这个方法返回了数据。在这个方法里可以处理Ui,可以把处理完的数据展示在ui上。比如图片啊,文字啊,一切你想要的结果。