gradle
dependencies {
def arch_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$arch_version"
implementation "androidx.lifecycle:lifecycle-livedata:$arch_version"
implementation "androidx.room:room-runtime:$arch_version"
}
public class MyLiveData extends LiveData<String> {
private MutableLiveData<String> liveData = new MutableLiveData<>();
public void setData(String data) {
liveData.setValue(data);
}
public LiveData<String> getData() {
return liveData;
}
}
public class MyViewModel extends ViewModel {
private MutableLiveData<String> data = new MutableLiveData<>();
public void setData(String newData) {
data.setValue(newData);
}
public LiveData<String> getData() {
return data;
}
}
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
@ColumnInfo(name = "name")
public String name;
}
@Dao
public interface UserDao {
@Query("SELECT * FROM users")
List<User> getAll();
@Insert
void insert(User user);
@Delete
void delete(User user);
}
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
public class MyApp extends Application {
private static AppDatabase database;
@Override
public void onCreate() {
super.onCreate();
database = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "my-db").build();
}
public static AppDatabase getDatabase() {
return database;
}
}
public class MyDebugActivity extends AppCompatActivity {
private static final String DB_TAG = "ROOM_DEBUG";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Stetho.initializeWithDefaults(this);
Stetho.RoomDatabaseInspectorModule databaseInspectorModule =
new Stetho.RoomDatabaseInspectorModule(
AppDatabase.getDatabase(), MyApplication.getDatabaseName());
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(
Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(databaseInspectorModule)
.build());
}
}