Merge "Avoid to hold a strong reference to Context object" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-11-04 01:00:50 +00:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 5 deletions

View File

@@ -378,7 +378,7 @@ public final class ContentCaptureManager {
private final Object mLock = new Object();
@NonNull
private final Context mContext;
private final StrippedContext mContext;
@NonNull
private final IContentCaptureManager mService;
@@ -413,10 +413,38 @@ public final class ContentCaptureManager {
ComponentName contentCaptureClientGetComponentName();
}
/** @hide */
static class StrippedContext {
final String mPackageName;
final String mContext;
final @UserIdInt int mUserId;
private StrippedContext(Context context) {
mPackageName = context.getPackageName();
mContext = context.toString();
mUserId = context.getUserId();
}
@Override
public String toString() {
return mContext;
}
public String getPackageName() {
return mPackageName;
}
@UserIdInt
public int getUserId() {
return mUserId;
}
}
/** @hide */
public ContentCaptureManager(@NonNull Context context,
@NonNull IContentCaptureManager service, @NonNull ContentCaptureOptions options) {
mContext = Objects.requireNonNull(context, "context cannot be null");
Objects.requireNonNull(context, "context cannot be null");
mContext = new StrippedContext(context);
mService = Objects.requireNonNull(service, "service cannot be null");
mOptions = Objects.requireNonNull(options, "options cannot be null");

View File

@@ -36,7 +36,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UiThread;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ParceledListSlice;
import android.graphics.Insets;
import android.graphics.Rect;
@@ -103,7 +102,7 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
private final AtomicBoolean mDisabled = new AtomicBoolean(false);
@NonNull
private final Context mContext;
private final ContentCaptureManager.StrippedContext mContext;
@NonNull
private final ContentCaptureManager mManager;
@@ -197,7 +196,7 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
}
}
protected MainContentCaptureSession(@NonNull Context context,
protected MainContentCaptureSession(@NonNull ContentCaptureManager.StrippedContext context,
@NonNull ContentCaptureManager manager, @NonNull Handler handler,
@NonNull IContentCaptureManager systemServerInterface) {
mContext = context;