diff options
4 files changed, 14 insertions, 8 deletions
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java index 46cb65babc1c..b1f147be6735 100644 --- a/core/java/android/service/contentcapture/ContentCaptureService.java +++ b/core/java/android/service/contentcapture/ContentCaptureService.java @@ -677,10 +677,6 @@ public abstract class ContentCaptureService extends Service { throws RemoteException { synchronized (mLock) { executeAdapterMethodLocked(adapter -> adapter.onStart(fd), "onStart"); - - // Client app and Service successfully connected, so this object would be kept alive - // until the session has finished. - clearHardReferences(); } } @@ -693,6 +689,13 @@ public abstract class ContentCaptureService extends Service { } } + @Override + public void finish() throws RemoteException { + synchronized (mLock) { + clearHardReferences(); + } + } + private void executeAdapterMethodLocked(Consumer<DataShareReadAdapter> adapterFn, String methodName) { LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); diff --git a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl index 91c8ff1fc662..4d441fe2b856 100644 --- a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl +++ b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl @@ -22,4 +22,5 @@ import android.os.ICancellationSignal; oneway interface IDataShareReadAdapter { void start(in ParcelFileDescriptor fd); void error(int errorCode); + void finish(); } diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java index d021fc917c88..756ff78e5906 100644 --- a/core/java/android/view/contentcapture/ContentCaptureManager.java +++ b/core/java/android/view/contentcapture/ContentCaptureManager.java @@ -761,10 +761,6 @@ public final class ContentCaptureManager { public void write(ParcelFileDescriptor destination) throws RemoteException { executeAdapterMethodLocked(adapter -> adapter.onWrite(destination), "onWrite"); - - // Client app and Service successfully connected, so this object would be kept alive - // until the session has finished. - clearHardReferences(); } @Override @@ -779,6 +775,11 @@ public final class ContentCaptureManager { clearHardReferences(); } + @Override + public void finish() throws RemoteException { + clearHardReferences(); + } + private void executeAdapterMethodLocked(Consumer<DataShareWriteAdapter> adapterFn, String methodName) { LocalDataShareAdapterResourceManager resourceManager = mResourceManagerReference.get(); diff --git a/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl b/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl index 80924ef78f85..015b3bc2a00b 100644 --- a/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl +++ b/core/java/android/view/contentcapture/IDataShareWriteAdapter.aidl @@ -25,4 +25,5 @@ oneway interface IDataShareWriteAdapter { void write(in ParcelFileDescriptor destination); void error(int errorCode); void rejected(); + void finish(); } |