Android UI 及 IO 工具库:AndroidUIO
函数,是编程中最常见的处理单元,加上泛型信息,我们可以让函数的表达能力更强。 Java的函数虽然用起来不如一些函数式语言那样简洁,但是,包装在接口下面的函数,还可以更加方便的携带更丰富的信息。 在这套类库中,一个简单通用的可以携带泛型信息的回调接口, 将贯穿整个系统。 设计一个具有良好扩展性的基础框架, 最重要的一点是掌握 “有”和“无”的平衡。 有: 我需要提供那些模块?那些功能?什么结构? 无: 我在我的系统中提供那些自定义的坑,可以让你自己去完善,去扩展。 我在这套类库中, 通过一个通用回调接口, 用来描述“无”的存在,绝大部分功能都以“无” 为中心来设计。 上善若水,我认为最好的工具,就是,当他帮你做了实实在在的事情,而你不需要关心他的存在。 在这个UI&IO框架中,大多数情况下都尊崇这个设计思想。 如: 当你适用网络图片的时候,不用关心图片缓存的操作; 当你编写网络任务时,Activity暂停/恢复/终止时,您无需再为相关的任务调度优化操心; 没有网络的时候,不需要关心离线展示的支持;等等... 任务管理 自动根据生命周期调度(终止/暂停/继续)任务。 随时手动终止任务。 网络缓存优化 自动缓存 自动离线支持 双回调机制 快速内容展示 网络数据检查并按需更新 简单bind接口 自动计数和内存管理 自动支持动画gif 自定义图像预处理接口 比如,如果你想画个圆角阴影什么的 数据结构和java对象是一一对应的, 但是我们很多老实的程序员天天乐此不疲的手动解析json,手动吧这些json一个个复制到java对象模型中, 这些实在是没有必要。 健值对存储DSL 健值存储接口的属性,可以自动实现读写抄作, 系统通过动态代理自动将其实现。 关系数据库映射DSL 定义一个java类,加上简单的注解,即可描述一个简单的数据存储格式,根据这个类就可以自动创建出一个SQLiteMapping, 自动实现一个简单的关系数据映射DAO。 Activity 状态 ##其他 网络检测。 Toast,Application等等Android UI 及 IO 工具库(基础框架)
Android APP framework 是一个拖沓冗余的体系,正是因为他的不足,才需要我们去完善他。
通用回调机制
---- 有物混成,先天地生
设计理念
---- 有之以为利,无之以为用。
自动化处理
---- 太上,不知有之。
网络请求
图片处理
自动模型转换
存储模型
状态管理
Http Request && Cache && schedule automatic
//the http request will be canceled after activity finished //and auto paused after the activity is paused when the task is pauseable. //and auto resume after the activity is resume again. Cancelable task = UIO.get(new Callback<MyClass>(){ //http stream will be auto parsed and mapping to you standard javabean object. public void callback(MyClass javabean){ //TODO:... } public void error(Throwable ex, boolean callbackError){ //TODO:.... } },url); // and you can cancel it any time by yourself // task.cancel(); // double callback (cache first show and update on need) Cancelable task = UIO.get(new CacheCallback<MyClass>(){ public void callback(MyClass javabean){ //TODO: on cache parsed! } public void update(MyClass javabean){ //TODO: on new network result(null for not modified data) } public void error(Throwable ex, boolean callbackError){ //TODO:.... } },url); // post file Cancelable task = UIO.post(new Callback<MyClass>(){ public void callback(MyClass javabean){ //TODO: upload success! } public void error(Throwable ex, boolean callbackError){ //TODO:.... } }, url, fileName, file);
Image Bind
//the image url will auto load and parse and set as the drawable for the imageView //if the image url is a animated gif,then it is show as a movie! UIO.bind(imageView,imageUrl); //you can set the drawableFactory for the image loading(getLoadingDrawable) and process(such as radious, shawdown....) //and set the fallback drawable for the action UIO.bind(imageView,imageUrl,drawableFactory,fallbackResourceId); //you can set the callback for the bind action(callback on image load(or cached) and bind to image view) UIO.bind(imageView, imageUrl,drawableFactory,fallbackResourceId, callback);//Callback<Drawable>