项目地址:https://github.com/yangfuhai/afinal (里面有使用说明)
主要有四大模块:
(1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。
(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
(3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。
(4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
Stetho (真的很简洁高效)
Stetho是Facebook出品的一个强大的Android调试工具,使用该工具你可以在Chrome Developer Tools查看App的布局,网络请求,sqlite,preference,一切都是可视化的操作,无须自己在去使用adb,也不需要root你的设备。
下面来看一个实例:
package com.example.liuyazhou.myfifthapplication; import android.app.Application; import com.facebook.stetho.Stetho; /** * Created by liuyazhou on 2016/9/17. */ public class CustomApplication extends Application { @Override public void onCreate() { super.onCreate(); Stetho.initializeWithDefaults(this); } }
package com.example.liuyazhou.myfifthapplication; /** * Created by liuyazhou on 2016/9/17. */ import java.util.Date; import java.util.List; import net.tsz.afinal.FinalActivity; import net.tsz.afinal.FinalDb; import net.tsz.afinal.annotation.view.ViewInject; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.TextView; public class AfinalOrmDemoActivity extends FinalActivity { @ViewInject(id=R.id.textView) TextView textView; //这里使用了afinal的ioc功能,以后将会讲到 @ViewInject(id=R.id.btn1,click="btnClick") Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FinalDb db = FinalDb.create(this); User user = new User(); user.setEmail("afinal@tsz.net"); user.setName("探索者10"); user.setRegisterDate(new Date()); user.setMoney(100.0); db.save(user); List<User> userList = db.findAll(User.class); Log.e("AfinalOrmDemoActivity","用户数量:"+ (userList!=null?userList.size():0)); textView.setText(userList.get(0).getName()+":"+userList.get(0).getRegisterDate()+"----"+userList.get(0).getMoney()); }//onCreate() }
package com.example.liuyazhou.myfifthapplication; /** * Created by liuyazhou on 2016/9/17. */ import java.util.Date; public class User { private int id; private String name; private String email; private Date registerDate; private Double money; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getRegisterDate() { return registerDate; } public void setRegisterDate(Date registerDate) { this.registerDate = registerDate; } public Double getMoney() { return money; } public void setMoney(Double money) { this.money = money; } }1 在build.gradle中的dependencies里面添加 compile 'com.facebook.stetho:stetho:1.3.1' ,其他部分不动,修改后如下:
dependencies { compile fileTree(dir: 'libs',include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile files('libs/afinal_0.5.1_bin.jar') compile 'com.facebook.stetho:stetho:1.3.1' ///这样就不用专门在libs中加入.jar }2 需要创建一个Application类,继承自android.app.Application,比如本文中的CustomApplication
3 App运行后(我是在genymotion上运行的),在chrome浏览器中输入网址chrome://inspect/#devices ,点击 inspect 即能看到sqlite的数据,同时支持sqlite语句操作
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.liuyazhou.myfifthapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:name="CustomApplication" android:theme="@style/AppTheme"> <activity android:name=".AfinalOrmDemoActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
原文链接:https://www.f2er.com/sqlite/198731.html