xUtils源码阅读(1)- x
2016-09-19 14:30
399 查看
这次阅读xUtils我们从上到下的方式读。
先看看这个这么另类的类x吧。
很简单,就是对整个项目的一个整体功能的总括。
共包括四部分:
1、数据库
2、Http访问
3、图片管理
4、view注入
5、任务管理(以上各项在执行的时候都要包装成一个个的任务执行)
源码:
先看看这个这么另类的类x吧。
很简单,就是对整个项目的一个整体功能的总括。
共包括四部分:
1、数据库
2、Http访问
3、图片管理
4、view注入
5、任务管理(以上各项在执行的时候都要包装成一个个的任务执行)
源码:
/** * Created by wyouflf on 15/6/10. * 任务控制中心, http, image, db, view注入等接口的入口. * 需要在在application的onCreate中初始化: x.Ext.init(this); */ public final class x {//静态类,其方法都是静态的。 private x() {//防止构造对象 } public static boolean isDebug() {//是否要debug return Ext.debug; } public static Application app() {//获取当前的Application if (Ext.app == null) { try { // 在IDE进行布局预览时使用 Class<?> renderActionClass = Class.forName("com.android.layoutlib.bridge.impl.RenderAction"); Method method = renderActionClass.getDeclaredMethod("getCurrentContext"); Context context = (Context) method.invoke(null); Ext.app = new MockApplication(context); } catch (Throwable ignored) { throw new RuntimeException("please invoke x.Ext.init(app) on Application#onCreate()" + " and register your Application in manifest."); } } return Ext.app; } public static TaskController task() {//所使用的任务管理器 return Ext.taskController; } public static HttpManager http() {//所使用的http管理器 if (Ext.httpManager == null) { HttpManagerImpl.registerInstance(); } return Ext.httpManager; } public static ImageManager image() {//所使用的image管理器 if (Ext.imageManager == null) { ImageManagerImpl.registerInstance(); } return Ext.imageManager; } public static ViewInjector view() {//所使用的view注入器 if (Ext.viewInjector == null) { ViewInjectorImpl.registerInstance(); } return Ext.viewInjector; } public static DbManager getDb(DbManager.DaoConfig daoConfig) {//数据库管理器 return DbManagerImpl.getInstance(daoConfig); } public static class Ext {//内部类,同时也是配置类,各个关键部件的引用管理类 private static boolean debug; private static Application app; private static TaskController taskController; private static HttpManager httpManager; private static ImageManager imageManager; private static ViewInjector viewInjector; private Ext() { } static { TaskControllerImpl.registerInstance(); // 默认信任所有https域名 HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); } public static void init(Application app) { if (Ext.app == null) { Ext.app = app; } } public static void setDebug(boolean debug) { Ext.debug = debug; } public static void setTaskController(TaskController taskController) { if (Ext.taskController == null) { Ext.taskController = taskController; } } public static void setHttpManager(HttpManager httpManager) { Ext.httpManager = httpManager; } public static void setImageManager(ImageManager imageManager) { Ext.imageManager = imageManager; } public static void setViewInjector(ViewInjector viewInjector) { Ext.viewInjector = viewInjector; } } private static class MockApplication extends Application { public MockApplication(Context baseContext) { this.attachBaseContext(baseContext);//绑定到特定的baseContext } } }
相关文章推荐
- xUtils源码阅读(5)-ReuseableBitmapDrawable
- xUtils源码阅读(8)-ImageDecoder
- Xutils3源码阅读,体验高大上的注解
- xUtils源码阅读(4)-MemCacheKey
- 分布式文件系统KFS源码阅读与分析(三):RPC实现机制(MetaServer端)
- ThinkPHP源码阅读3------行为扩展 推荐
- jdk源码阅读-HashMap
- android小说阅读源码、bilibili源码、MVP新闻源码等
- tomcat源码阅读步骤二
- [Photon] Lite Application 源码阅读笔记
- 淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划
- javascript源码阅读推荐
- TiDB 源码阅读系列文章(一)序
- hashmap 源码阅读
- Kafka源码阅读 —— KafkaController(5)
- Intellij IDEA搭建Spark源码阅读环境
- Tornado源码阅读总览
- Struts2源码阅读--请求流程
- 非典型2D游戏引擎 Orx 源码阅读笔记(3) 内存管理