您的位置:首页 > 其它

xUtils源码阅读(1)- x

2016-09-19 14:30 399 查看
这次阅读xUtils我们从上到下的方式读。

先看看这个这么另类的类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
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: