读书人

对Handler的1点封装

发布时间: 2012-11-25 11:44:31 作者: rapoo

对Handler的一点封装

本人博客原文

在Android中,我们经常需要使用Handler来进行事务的异步处理。其实对于基于主线程的Handler,没有必要到处去创建。另外对于基于非主线程的Handler所对应的Thread应该在什么时候退出,始终是一个很难得抉择。因此我封装了一个基于主线程的Handler以便整个程序使用,并封装了两个基于非主线程Handler以便整个程序中使用。因为这个两个基于非主线程Handler是用于整个程序中使用的,所以其对应的线程就不退出(直到进程挂掉),自然就少了其应Thread应该在何时退出的艰难抉择。如果你还不了解Handler请先阅读以下文章《关于Handler技术》,《Android线程模型》和《Looper和Handler》源码如下

privatefinalstaticHandler=newHandler(Looper.());privatefinalstaticHandlerThread=newHandlerThread("Business0Handler");privatestaticHandler;privatefinalstaticHandlerThread=newHandlerThread("Business1Handler");privatestaticHandler;/*该Handler运行在主线程中,因此一些必须放在主线程来处理的事务可以用该Hanlder来处理*/publicstaticHandler(){return;}/* 该Handler主要用于小事务处理,对于一些耗时但30秒钟能执行完的操作,建议大家放到该Handler来处理*/publicstaticHandler(){if(==null){synchronized(AppUtil.class){if(==null){.();=newHandler(.());}}}return;}/* * 该Handler主要用于大事务处理,它可能会非常繁忙,它也许10分钟或许更久都没有空。 */publicstaticHandler(){if(==null){synchronized(AppUtil.class){if(==null){.();=newHandler(.());}}}return;}

使用示例

Runnable=newRunnable(){@Overridepublicvoid(){// TODO Auto-generated method stub}};().();Runnable=newRunnable(){@Overridepublicvoid(){// TODO Auto-generated method stub}};().();Runnable=newRunnable(){@Overridepublicvoid(){// TODO Auto-generated method stub}};().();

结束!

读书人网 >移动开发

热点推荐