void updateUserName()

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);
                        }
                    }
                });
            }
        });
    }