2.1 Lifecycle
public class MainActivity extends AppCompatActivity implements LifecycleOwner {
private LifecycleRegistry lifecycleRegistry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lifecycleRegistry = new LifecycleRegistry(this);
lifecycleRegistry.markState(Lifecycle.State.CREATED);
}
@Override
protected void onStart() {
super.onStart();
lifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@NonNull
@Override
public Lifecycle getLifecycle() {
return lifecycleRegistry;
}
}
2.2 LiveData
public class UserViewModel extends ViewModel {
private MutableLiveData<String> userNameLiveData;
public LiveData<String> getUserNameLiveData() {
if (userNameLiveData == null) {
userNameLiveData = new MutableLiveData<>();
}
return userNameLiveData;
}
public void loadUserName() {
String username = "John Doe";
userNameLiveData.setValue(username);
}
}
2.3 Room
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
@ColumnInfo(name = "user_name")
public String userName;
}
@Dao
public interface UserDao {
@Query("SELECT * FROM users")
List<User> getAllUsers();
@Insert
void insertUser(User user);
@Update
void updateUser(User user);
@Delete
void deleteUser(User user);
}
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}