首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

对Handler的1点封装

2012-11-25 
对Handler的一点封装本人博客原文在Android中,我们经常需要使用Handler来进行事务的异步处理。其实对于基于

对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}};().();

结束!

热点排行