android - Room的使用教程
16lz
2021-01-23
room的集成
添加依赖
api 'androidx.room:room-runtime:2.2.3'annotationProcessor 'androidx.room:room-compiler:2.2.3'
第一步:首先创建一个表结构:
/** * Created by malei on 2019-12-20 * Describe: */@Entity(tableName = UserTable.TABLE)public class UserTable { public static final String TABLE = "user_table"; @PrimaryKey //定义主键 public long id; @ColumnInfo(name = "name") //定义数据表中的字段名 public String name; @ColumnInfo(name = "sex") public String sex; @Ignore //指示Room需要忽略的字段或方法 public String ignoreText; @Override public String toString() { return "UserTable{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", ignoreText='" + ignoreText + '\'' + '}'; }}
第二步:dao结构
/** * Created by malei on 2019-12-20 * Describe: */@Daopublic interface UserDao { @Insert(onConflict = OnConflictStrategy.REPLACE) void insertUsers(UserTable... entities); @Update(onConflict = OnConflictStrategy.REPLACE) int updateUsers(UserTable... users); @Query("SELECT * FROM " + UserTable.TABLE + " WHERE id LIKE :id") UserTable find(long id); @Delete void deleteUsers(UserTable... users); @Query("SELECT * FROM "+ UserTable.TABLE) UserTable[] findAllUsers(); @Query("SELECT * FROM "+ UserTable.TABLE + " WHERE name LIKE :name " ) List findUserByName(String name);}
第三步:创建一个 RoomDatabase实例:
/** * Created by malei on 2019-12-20 * Describe:返回数据库表的持有者 */@Database(entities = {UserTable.class}, version = 1)public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao();}
第四步:封装工具类:
/** * Created by malei on 2019-12-20 * Describe: */public class RoomFactory { private static final String DB_NAMWE = "mydatabase.db"; public volatile static AppDatabase mAppDatabase; private RoomFactory() { } private static class Holder { private static RoomFactory instance = new RoomFactory(); } public static RoomFactory getInstance() { return Holder.instance; } public void init(Application application) { mAppDatabase = Room.databaseBuilder(application, AppDatabase.class, DB_NAMWE) .allowMainThreadQueries() //支持主线程 .build(); } public AppDatabase getDatabase(){ return RoomFactory.mAppDatabase; }}
stetho的集成
在gradle中配置dependencies:
dependencies {// Stetho corecompile 'com.facebook.stetho:stetho:1.3.1'//If you want to add a network helpercompile 'com.facebook.stetho:stetho-okhttp3:1.3.1'}
自定义一个MyApplication继承Application,在onCreate中初始化stetho:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); init(); } private void init(){ Stetho.initializeWithDefaults(this); new OkHttpClient.Builder() .addNetworkInterceptor(new StethoInterceptor()) .build(); }}
接着运行app到手机上。
然后打开chrome,输入网址chrome://inspect
更多相关文章
- Android 自定义拨打电话程序段
- 查看android目录结构
- Android中定义接口的用法
- Android:TextView自定义删除线
- Android 自定义Gif动画
- Android 自定义ImageView,支持圆角和直角
- android:滑动挂断自定义View的简单实现
- 关于Android的Accessibility--自定义View