Loading core/java/android/app/ContextImpl.java +0 −1 Original line number Diff line number Diff line Loading @@ -1795,7 +1795,6 @@ class ContextImpl extends Context { @Override public boolean bindService( Intent service, int flags, Executor executor, ServiceConnection conn) { warnIfCallingFromSystemProcess(); return bindServiceCommon(service, conn, flags, null, null, executor, getUser()); } Loading core/java/com/android/internal/infra/ServiceConnector.java +19 −15 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.IInterface; import android.os.Looper; Loading @@ -40,6 +41,7 @@ import java.util.Objects; import java.util.Queue; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Function; Loading Loading @@ -220,11 +222,13 @@ public interface ServiceConnector<I extends IInterface> { private final @NonNull ServiceConnection mServiceConnection = this; private final @NonNull Runnable mTimeoutDisconnect = this; // This context contains the user information. protected final @NonNull Context mContext; private final @NonNull Intent mIntent; private final int mBindingFlags; private final int mUserId; private final @Nullable Function<IBinder, I> mBinderAsInterface; private final @NonNull Handler mHandler; private final @NonNull Executor mExecutor; private volatile I mService = null; private boolean mBinding = false; Loading @@ -249,11 +253,13 @@ public interface ServiceConnector<I extends IInterface> { */ public Impl(@NonNull Context context, @NonNull Intent intent, int bindingFlags, @UserIdInt int userId, @Nullable Function<IBinder, I> binderAsInterface) { mContext = context; mContext = context.createContextAsUser(UserHandle.of(userId), 0); mIntent = intent; mBindingFlags = bindingFlags; mUserId = userId; mBinderAsInterface = binderAsInterface; mHandler = getJobHandler(); mExecutor = new HandlerExecutor(mHandler); } /** Loading Loading @@ -292,14 +298,12 @@ public interface ServiceConnector<I extends IInterface> { * <p> * If overridden, implementation must use at least the provided {@link ServiceConnection} */ protected boolean bindService( @NonNull ServiceConnection serviceConnection, @NonNull Handler handler) { protected boolean bindService(@NonNull ServiceConnection serviceConnection) { if (DEBUG) { logTrace(); } return mContext.bindServiceAsUser(mIntent, serviceConnection, Context.BIND_AUTO_CREATE | mBindingFlags, handler, UserHandle.of(mUserId)); return mContext.bindService(mIntent, Context.BIND_AUTO_CREATE | mBindingFlags, mExecutor, serviceConnection); } /** Loading Loading @@ -381,13 +385,13 @@ public interface ServiceConnector<I extends IInterface> { if (!enqueue((Job<I, ?>) task)) { task.completeExceptionally(new IllegalStateException( "Failed to post a job to handler. Likely " + getJobHandler().getLooper() + " is exiting")); + mHandler.getLooper() + " is exiting")); } } private boolean enqueue(@NonNull Job<I, ?> job) { cancelTimeout(); return getJobHandler().post(() -> enqueueJobThread(job)); return mHandler.post(() -> enqueueJobThread(job)); } void enqueueJobThread(@NonNull Job<I, ?> job) { Loading @@ -404,7 +408,7 @@ public interface ServiceConnector<I extends IInterface> { } else if (isBound()) { processQueue(); } else if (!mBinding) { if (bindService(mServiceConnection, getJobHandler())) { if (bindService(mServiceConnection)) { mBinding = true; } else { completeExceptionally(job, Loading Loading @@ -497,7 +501,7 @@ public interface ServiceConnector<I extends IInterface> { logTrace(); } mUnbinding = true; getJobHandler().post(this::unbindJobThread); mHandler.post(this::unbindJobThread); } void unbindJobThread() { Loading Loading @@ -606,7 +610,7 @@ public interface ServiceConnector<I extends IInterface> { public String toString() { StringBuilder sb = new StringBuilder("ServiceConnector@") .append(System.identityHashCode(this) % 1000).append("(") .append(mIntent).append(", user: ").append(mUserId) .append(mIntent).append(", user: ").append(mContext.getUser().getIdentifier()) .append(")[").append(stateToString()); if (!mQueue.isEmpty()) { sb.append(", ").append(mQueue.size()).append(" pending job(s)"); Loading @@ -624,8 +628,8 @@ public interface ServiceConnector<I extends IInterface> { String tab = " "; pw.append(prefix).append("ServiceConnector:").println(); pw.append(prefix).append(tab).append(String.valueOf(mIntent)).println(); pw.append(prefix).append(tab) .append("userId: ").append(String.valueOf(mUserId)).println(); pw.append(prefix).append(tab).append("userId: ") .append(String.valueOf(mContext.getUser().getIdentifier())).println(); pw.append(prefix).append(tab) .append("State: ").append(stateToString()).println(); pw.append(prefix).append(tab) Loading Loading
core/java/android/app/ContextImpl.java +0 −1 Original line number Diff line number Diff line Loading @@ -1795,7 +1795,6 @@ class ContextImpl extends Context { @Override public boolean bindService( Intent service, int flags, Executor executor, ServiceConnection conn) { warnIfCallingFromSystemProcess(); return bindServiceCommon(service, conn, flags, null, null, executor, getUser()); } Loading
core/java/com/android/internal/infra/ServiceConnector.java +19 −15 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.IInterface; import android.os.Looper; Loading @@ -40,6 +41,7 @@ import java.util.Objects; import java.util.Queue; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Function; Loading Loading @@ -220,11 +222,13 @@ public interface ServiceConnector<I extends IInterface> { private final @NonNull ServiceConnection mServiceConnection = this; private final @NonNull Runnable mTimeoutDisconnect = this; // This context contains the user information. protected final @NonNull Context mContext; private final @NonNull Intent mIntent; private final int mBindingFlags; private final int mUserId; private final @Nullable Function<IBinder, I> mBinderAsInterface; private final @NonNull Handler mHandler; private final @NonNull Executor mExecutor; private volatile I mService = null; private boolean mBinding = false; Loading @@ -249,11 +253,13 @@ public interface ServiceConnector<I extends IInterface> { */ public Impl(@NonNull Context context, @NonNull Intent intent, int bindingFlags, @UserIdInt int userId, @Nullable Function<IBinder, I> binderAsInterface) { mContext = context; mContext = context.createContextAsUser(UserHandle.of(userId), 0); mIntent = intent; mBindingFlags = bindingFlags; mUserId = userId; mBinderAsInterface = binderAsInterface; mHandler = getJobHandler(); mExecutor = new HandlerExecutor(mHandler); } /** Loading Loading @@ -292,14 +298,12 @@ public interface ServiceConnector<I extends IInterface> { * <p> * If overridden, implementation must use at least the provided {@link ServiceConnection} */ protected boolean bindService( @NonNull ServiceConnection serviceConnection, @NonNull Handler handler) { protected boolean bindService(@NonNull ServiceConnection serviceConnection) { if (DEBUG) { logTrace(); } return mContext.bindServiceAsUser(mIntent, serviceConnection, Context.BIND_AUTO_CREATE | mBindingFlags, handler, UserHandle.of(mUserId)); return mContext.bindService(mIntent, Context.BIND_AUTO_CREATE | mBindingFlags, mExecutor, serviceConnection); } /** Loading Loading @@ -381,13 +385,13 @@ public interface ServiceConnector<I extends IInterface> { if (!enqueue((Job<I, ?>) task)) { task.completeExceptionally(new IllegalStateException( "Failed to post a job to handler. Likely " + getJobHandler().getLooper() + " is exiting")); + mHandler.getLooper() + " is exiting")); } } private boolean enqueue(@NonNull Job<I, ?> job) { cancelTimeout(); return getJobHandler().post(() -> enqueueJobThread(job)); return mHandler.post(() -> enqueueJobThread(job)); } void enqueueJobThread(@NonNull Job<I, ?> job) { Loading @@ -404,7 +408,7 @@ public interface ServiceConnector<I extends IInterface> { } else if (isBound()) { processQueue(); } else if (!mBinding) { if (bindService(mServiceConnection, getJobHandler())) { if (bindService(mServiceConnection)) { mBinding = true; } else { completeExceptionally(job, Loading Loading @@ -497,7 +501,7 @@ public interface ServiceConnector<I extends IInterface> { logTrace(); } mUnbinding = true; getJobHandler().post(this::unbindJobThread); mHandler.post(this::unbindJobThread); } void unbindJobThread() { Loading Loading @@ -606,7 +610,7 @@ public interface ServiceConnector<I extends IInterface> { public String toString() { StringBuilder sb = new StringBuilder("ServiceConnector@") .append(System.identityHashCode(this) % 1000).append("(") .append(mIntent).append(", user: ").append(mUserId) .append(mIntent).append(", user: ").append(mContext.getUser().getIdentifier()) .append(")[").append(stateToString()); if (!mQueue.isEmpty()) { sb.append(", ").append(mQueue.size()).append(" pending job(s)"); Loading @@ -624,8 +628,8 @@ public interface ServiceConnector<I extends IInterface> { String tab = " "; pw.append(prefix).append("ServiceConnector:").println(); pw.append(prefix).append(tab).append(String.valueOf(mIntent)).println(); pw.append(prefix).append(tab) .append("userId: ").append(String.valueOf(mUserId)).println(); pw.append(prefix).append(tab).append("userId: ") .append(String.valueOf(mContext.getUser().getIdentifier())).println(); pw.append(prefix).append(tab) .append("State: ").append(stateToString()).println(); pw.append(prefix).append(tab) Loading