in PersistenceMigrationsSample/app/src/room3/java/com/example/android/persistence/migrations/UserRepository.java [78:104]
void updateUserName(String userName, UpdateUserCallback callback) {
final WeakReference<UpdateUserCallback> updateUserCallback = new WeakReference<>(callback);
Date date = new Date(System.currentTimeMillis());
final User user = mCachedUser == null
? new User(userName)
: new User(mCachedUser.getId(), userName, date);
// update the user on the I/O thread
mAppExecutors.diskIO().execute(new Runnable() {
@Override
public void run() {
mUserDataSource.insertOrUpdateUser(user);
mCachedUser = user;
// notify on the main thread
mAppExecutors.mainThread().execute(new Runnable() {
@Override
public void run() {
UpdateUserCallback userCallback = updateUserCallback.get();
if (userCallback != null) {
userCallback.onUserUpdated(user);
}
}
});
}
});
}