异步机制学习

在Android中异步主要有Thread和Handler。

Thread是创建线程来实现异步,Handler则是在looper中实现异步。

1、线程异步:

创建线程new Thread();调用Thread.start()启动线程。在子线程中执行Thread.run()方法。也可以通过new Thread(Runnable runnable)来实例化后在子线程中执行Runnable.run()方法,此时不能重写Thread中的run()方法,否则还是会执行Thread.run()方法。

2、handler异步(主要用来更新UI之类的):

通过Handler.post(Runnable);
      Handler.postAtTime(Runnable,long);
      Handler.postDelayed(Runnable long);//前三个传递runnable
      Handler.sendEmptyMessage(int);
      Handler.sendMessage(Message);
      Handler.sendMessageAtTime(Message,long);
      Handler.sendMessageDelayed(Message,long);//后四个传递message

来将message或者runnable事件加入到主线程的looper队列中,然后等待空闲时从队列中取出message调用handleMessage(Message msg)处理,或者执行runnable里的run()方法。

这里是在一个线程中,没有多线程。

Handler必须在启动了looper的线程中实例化,主线程默认就启动了looper的。其他线程要想实例化handler必须先创建looper,或者在handlerThread(该线程创建了looper,start的同时也start了looper)中实例化。

posted @ 2014-11-21 20:29  不吃早饭好不好  阅读(182)  评论(0编辑  收藏  举报