Android除了能用java的Thread创建异步任务
android还提供了以下异步工具
1.AsyncTask。在后工作了,可以自定义发给主线程状态,完成时把结果发给主线程。
2.HandlerThread。是android提供的带消息循环的Thread。
// 创建对象,并启动该线程
HandlerThread mHandlerThread = new HandlerThread("sub_thread");
mHandlerThread.start();
// 一定要传刚创建的线程的Looper,要不然handlermessage不再子线程中执行
Handler mHandler = new Handler(mHandlerThread.getLooper());
3.自定义带消息循环的Thread(就是在run函数中加Looper.prepare();Looper.loop();在这两个被调中间定义handler。退出消息循环用 Looper.myLooper().quit())

new AsyncTask<Integer, Integer, Integer>() {protected void onPreExecute() {Log.i(TAG, "异步子线程开始前");}@Overrideprotected Integer doInBackground(Integer... params) {Log.i(TAG, "doInBackground 传参:" + params[0]);for (int i = 0; i < 10; i++) {publishProgress(i);}return 2;}protected void onProgressUpdate(Integer... values) {Log.i(TAG, "doInBackground 更新进度为:" + values[0]);}protected void onPostExecute(Integer result) {Log.i(TAG, "doInBackground 返回结果为:" + result);}}.execute(1);

 class LooperThread extends Thread {          private Handler mHandler;          private final Object mSync = new Object();            public void run() {              Looper.prepare();//加锁是为了 getHandler()不为空,必须的            synchronized (mSync) {                  mHandler = new Handler(){                      @Override                      public void handleMessage(Message msg) {                          Log.d("CYQ", "--->" + msg);                      }                  };                  mSync.notifyAll();              }              Looper.loop();          }                    public Handler getHandler() {              synchronized (mSync) {                  if (mHandler == null) {                      try {                          mSync.wait();                      } catch (InterruptedException e) {                      }                  }                  return mHandler;              }          }          public void exit() {              getHandler().post(new Runnable(){                  public void run() {                      Looper.myLooper().quit();                  }});          }      }  

更多相关文章

  1. Android中线程的使用方法
  2. Android UI主线程和子线程
  3. Android文档——进程优先级与线程
  4. android下发送中文短消息
  5. Android之 UI主线程ZT
  6. Android中的多线程
  7. 五.在Android中实现线程的方法

随机推荐

  1. PC客户端与Android服务端的Socket同步通
  2. Android(安卓)Studio 中提示 Private fie
  3. Android之ViewStub的简单使用
  4. Android开发学习笔记(二)——编译和运行原
  5. Android(安卓)app的applicationId和包名
  6. 通读《疯狂Android讲义》笔记 01 ___Andr
  7. Android(安卓)程序在系统中如何完成启动
  8. Activity从屏幕底部滑出、滑入、处理黑色
  9. android 输入法/软键盘调用浅谈I--输入法
  10. Android命令行使用