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:
*/
@Dao
public 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<UserTable> 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 core
compile 'com.facebook.stetho:stetho:1.3.1'
//If you want to add a network helper
compile '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