android数据库异步加载,WelikeAndroid: WelikeAndroid 是一款引入即用的便捷开发框架,一行代码完成http请求,bitmap异步加载,数据库增删查改,同时拥有最超前的异...

5b8255888c717c67ae5041483b5008ec.png

rustc-serialize.svg

bt345.svg

example-python.svg

##WelikeAndroid 是什么?

WelikeAndroid 是一款引入即用的便捷开发框架,致力于为程序员打造最佳的编程体验,

使用WelikeAndroid, 你会觉得写代码是一件很轻松的事情.

##欢迎加入我们的大家庭:

###142853711(WelikeAndroid交流群)

##Welike带来了哪些特征?

WelikeAndroid目前包含五个大模块:

异常安全隔离模块(实验阶段):当任何线程抛出任何异常,我们的异常隔离机制都会让UI线程继续运行下去.

Http模块: 一行代码完成POST、GET请求和Download,支持上传, 高度优化Disk的缓存加载机制,

自由设置缓存大小、缓存时间(也支持永久缓存和不缓存).

Bitmap模块: 一行代码完成异步显示图片,无需考虑OOM问题,支持加载前对图片做自定义处理.

Database模块: 支持NotNull,Table,ID,Ignore等注解,Bean无需Getter和Setter,一键式部署数据库.

ui操纵模块: 我们为Activity基类做了完善的封装,继承基类可以让代码更加优雅.

另:请不要认为功能相似,框架就不是原创,源码摆在眼前,何不看一看?

使用WelikeAndroid需要以下权限:

##下文将教你如何圆润的使用WelikeAndroid:

###通过WelikeContext在任意处取得上下文:

WelikeContext.getApplication(); 就可以取得当前App的上下文

WelikeToast.toast("你好!"); 简单一步弹出Toast.

##WelikeGuard(异常安全隔离机制用法):

第一步,开启异常隔离机制:

WelikeGuard.enableGuard();

第二步,注册一个全局异常监听器:

WelikeGuard.registerUnCaughtHandler(new Thread.UncaughtExceptionHandler() {

@Override

public void uncaughtException(Thread thread, Throwable ex) {

WelikeGuard.newThreadToast("出现异常了: " + ex.getMessage() );

}

});

你也可以自定义异常:

/**

*

* 自定义的异常,当异常被抛出后,会自动回调onCatchThrowable函数.

*/

@Catch(process = "onCatchThrowable")

public class CustomException extends IllegalAccessError {

public static void onCatchThrowable(Thread t){

WeLog.e(t.getName() + " 抛出了一个异常...");

}

}

另外,继承自UncaughtThrowable的异常我们不会对其进行拦截.

使用Welike做屏幕适配:

Welike的ViewPorter类提供了屏幕适配的Fluent-API,我们可以通过一组流畅的API轻松做好屏幕适配.

ViewPorter.from(button).ofScreen().divWidth(2).commit();//宽度变为屏幕的二分之一

ViewPorter.from(button).of(viewGroup).divHeight(2).commit();//高度变为viewGroup的二分之一

ViewPorter.from(button).div(2).commit();//宽度和高度变为屏幕的四分之一

ViewPorter.from(button).of(this).fillWidth().fillHeight().commit();//宽度和高度铺满Activity

ViewPorter.from(button).sameAs(imageView).commit();//button的宽度和高度和imageView一样

WelikeHttp入门:

首先来看看框架的调试信息,是不是一目了然.

2f70fa1c50a1fb42c6303e81eba72f6f.png

202d3b024729a45d8ce21a33c68607e9.png

第一步,取得WelikeHttp默认实例.

WelikeHttp welikeHttp = WelikeHttp.getDefault();

第二步,发送一个Get请求.

HttpParams params = new HttpParams();

params.putParams("app","qr.get",

"data","Test");//一次性放入两对 参数 和 值

//发送Get请求

HttpRequest request = welikeHttp.get("http://api.k780.com:88", params, new HttpResultCallback() {

@Override

public void onSuccess(String content) {

super.onSuccess(content);

WelikeToast.toast("返回的JSON为:" + content);

}

@Override

public void onFailure(HttpResponse response) {

super.onFailure(response);

WelikeToast.toast("JSON请求发送失败.");

}

@Override

public void onCancel(HttpRequest request) {

super.onCancel(request);

WelikeToast.toast("请求被取消.");

}

});

//取消请求,会回调onCancel()

request.cancel();

当然,我们为满足需求提供了多种扩展的Callback,目前我们提供以下Callback供您选择:

HttpCallback(响应为byte[]数组)

FileUploadCallback(仅在上传文件时使用)

HttpBitmapCallback(建议使用Bitmap模块)

HttpResultCallback(响应为String)

DownloadCallback(仅在download时使用)

如需自定义Http模块的配置(如缓存时间),请查看HttpConfig.

WelikeBitmap入门:

第一步,取得默认的WelikeBitmap实例:

//取得默认的WelikeBitmap实例

WelikeBitmap welikeBitmap = WelikeBitmap.getDefault();

第二步,异步加载一张图片:

BitmapRequest request = welikeBitmap.loadBitmap(imageView,

"http://img0.imgtn.bdimg.com/it/u=937075122,1381619862&fm=21&gp=0.jpg",

android.R.drawable.btn_star,//加载中显示的图片

android.R.drawable.ic_delete,//加载失败时显示的图片

new BitmapCallback() {

@Override

public Bitmap onProcessBitmap(byte[] data) {

//如果需要在加载时处理图片,可以在这里处理,

//如果不需要处理,就返回null或者不复写这个方法.

return null;

}

@Override

public void onPreStart(String url) {

super.onPreStart(url);

//加载前回调

WeLog.d("===========> onPreStart()");

}

@Override

public void onCancel(String url) {

super.onCancel(url);

//请求取消时回调

WeLog.d("===========> onCancel()");

}

@Override

public void onLoadSuccess(String url, Bitmap bitmap) {

super.onLoadSuccess(url, bitmap);

//图片加载成功后回调

WeLog.d("===========> onLoadSuccess()");

}

@Override

public void onRequestHttp(HttpRequest request) {

super.onRequestHttp(request);

//图片需要请求http时回调

WeLog.d("===========> onRequestHttp()");

}

@Override

public void onLoadFailed(HttpResponse response, String url) {

super.onLoadFailed(response, url);

//请求失败时回调

WeLog.d("===========> onLoadFailed()");

}

});

如果需要自定义Config,请看BitmapConfig这个类.

##WelikeDAO入门:

首先写一个Bean.

/*表名,可有可无,默认为类名.*/

@Table(name="USER",afterTableCreate="afterTableCreate")

public class User{

@ID

public int id;//id可有可无,根据自己是否需要来加.

/*这个注解表示name字段不能为null*/

@NotNull

public String name;

public static void afterTableCreate(WelikeDao dao){

//在当前的表被创建时回调,可以在这里做一些表的初始化工作

}

}

然后将它写入到数据库

WelikeDao db = WelikeDao.instance("Welike.db");

User user = new User();

user.name = "Lody";

db.save(user);

从数据库取出Bean

User savedUser = db.findBeanByID(1);

更新指定ID的Bean

User wantoUpdateUser = new User();

wantoUpdateUser.name = "NiHao";

db.updateDbByID(1,wantoUpdateUser);

删除指ID定的Bean

db.deleteBeanByID(1);

更多实例请看DEMO和API文档.

##十秒钟学会WelikeActivity

我们将Activity的生命周期划分如下:

=>@initData(所有标有InitData注解的方法都最早在子线程被调用)

=>initGlobalView()

=>@JoinView(将标有此注解的View自动findViewByID和setOnClickListener)

=>onDataLoaded(数据加载完成时回调)

=>点击事件会回调onWidgetClick(View Widget)

###关于@JoinView的细节:

有以下三种写法:

@JoinView(name = "welike_btn")

Button welikeBtn;

@JoinView(id = R.id.welike_btn)

Button welikeBtn;

@JoinView(name = "welike_btn",click = false)

Button welikeBtn;

click为true时会自动调用view的setOnClickListener方法,并在onWidgetClick回调.

当需要绑定的是一个Button的时候, click属性默认为true,其它的View则默认为false.

##有问题反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

QQ: 382816028

Email:382816028@qq.com

来142853711群与大家一起讨论

##关于作者

var Me = {

nickName : "Lody"

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值