异步机制学习
在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)中实例化。