in PersistenceMigrationsSample/app/src/room3/java/com/example/android/persistence/migrations/UserRepository.java [44:70]
void getUser(final LoadUserCallback callback) {
final WeakReference<LoadUserCallback> loadUserCallback = new WeakReference<>(callback);
// request the user on the I/O thread
mAppExecutors.diskIO().execute(new Runnable() {
@Override
public void run() {
final User user = mUserDataSource.getUser();
// notify on the main thread
mAppExecutors.mainThread().execute(new Runnable() {
@Override
public void run() {
final LoadUserCallback userCallback = loadUserCallback.get();
if (userCallback == null) {
return;
}
if (user == null) {
userCallback.onDataNotAvailable();
} else {
mCachedUser = user;
userCallback.onUserLoaded(mCachedUser);
}
}
});
}
});
}