Loading core/java/android/inputmethodservice/IRemoteInputConnectionInvoker.java +14 −11 Original line number Diff line number Diff line Loading @@ -72,30 +72,33 @@ final class IRemoteInputConnectionInvoker { * callback. */ private static final class IntResultReceiver extends ResultReceiver { @NonNull @Nullable private IntConsumer mConsumer; @NonNull @Nullable private Executor mExecutor; IntResultReceiver(@NonNull Executor executor, @NonNull IntConsumer consumer) { super(null); Objects.requireNonNull(executor); Objects.requireNonNull(consumer); mExecutor = executor; mConsumer = consumer; } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { if (mExecutor != null && mConsumer != null) { mExecutor.execute(() -> mConsumer.accept(resultCode)); // provide callback only once. clear(); } } private void clear() { final Executor executor; final IntConsumer consumer; synchronized (this) { executor = mExecutor; consumer = mConsumer; mExecutor = null; mConsumer = null; } if (executor != null && consumer != null) { executor.execute(() -> consumer.accept(resultCode)); } } }; /** Loading Loading
core/java/android/inputmethodservice/IRemoteInputConnectionInvoker.java +14 −11 Original line number Diff line number Diff line Loading @@ -72,30 +72,33 @@ final class IRemoteInputConnectionInvoker { * callback. */ private static final class IntResultReceiver extends ResultReceiver { @NonNull @Nullable private IntConsumer mConsumer; @NonNull @Nullable private Executor mExecutor; IntResultReceiver(@NonNull Executor executor, @NonNull IntConsumer consumer) { super(null); Objects.requireNonNull(executor); Objects.requireNonNull(consumer); mExecutor = executor; mConsumer = consumer; } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { if (mExecutor != null && mConsumer != null) { mExecutor.execute(() -> mConsumer.accept(resultCode)); // provide callback only once. clear(); } } private void clear() { final Executor executor; final IntConsumer consumer; synchronized (this) { executor = mExecutor; consumer = mConsumer; mExecutor = null; mConsumer = null; } if (executor != null && consumer != null) { executor.execute(() -> consumer.accept(resultCode)); } } }; /** Loading