diff options
4 files changed, 28 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index a76aa6743bc5..92f8c6d780b5 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -3107,6 +3107,14 @@ package android.service.notification { } +package android.service.ondeviceintelligence { + + @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public abstract class OnDeviceIntelligenceService extends android.app.Service { + method public void onReady(); + } + +} + package android.service.quickaccesswallet { public interface QuickAccessWalletClient extends java.io.Closeable { diff --git a/core/java/android/service/ondeviceintelligence/IOnDeviceIntelligenceService.aidl b/core/java/android/service/ondeviceintelligence/IOnDeviceIntelligenceService.aidl index 908ab5f69775..a70871814d79 100644 --- a/core/java/android/service/ondeviceintelligence/IOnDeviceIntelligenceService.aidl +++ b/core/java/android/service/ondeviceintelligence/IOnDeviceIntelligenceService.aidl @@ -47,4 +47,5 @@ oneway interface IOnDeviceIntelligenceService { void registerRemoteServices(in IRemoteProcessingService remoteProcessingService); void notifyInferenceServiceConnected(); void notifyInferenceServiceDisconnected(); + void ready(); }
\ No newline at end of file diff --git a/core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java b/core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java index 86320b801f6c..5dc540a50dfc 100644 --- a/core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java +++ b/core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java @@ -24,6 +24,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SdkConstant; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.app.Service; import android.app.ondeviceintelligence.DownloadCallback; import android.app.ondeviceintelligence.Feature; @@ -111,6 +112,11 @@ public abstract class OnDeviceIntelligenceService extends Service { return new IOnDeviceIntelligenceService.Stub() { /** {@inheritDoc} */ @Override + public void ready() { + OnDeviceIntelligenceService.this.onReady(); + } + + @Override public void getVersion(RemoteCallback remoteCallback) { Objects.requireNonNull(remoteCallback); OnDeviceIntelligenceService.this.onGetVersion(l -> { @@ -208,6 +214,16 @@ public abstract class OnDeviceIntelligenceService extends Service { return null; } + /** + * Using this signal to assertively a signal each time service binds successfully, used only in + * tests to get a signal that service instance is ready. This is needed because we cannot rely + * on {@link #onCreate} or {@link #onBind} to be invoke on each binding. + * + * @hide + */ + @TestApi + public void onReady() {} + /** * Invoked when a new instance of the remote inference service is created. diff --git a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java index 953300ac43a6..d39debb8458f 100644 --- a/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java +++ b/services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java @@ -372,6 +372,7 @@ public class OnDeviceIntelligenceManagerService extends SystemService { public void onConnected( @NonNull IOnDeviceIntelligenceService service) { try { + service.ready(); service.registerRemoteServices( getRemoteProcessingService()); } catch (RemoteException ex) { @@ -538,6 +539,8 @@ public class OnDeviceIntelligenceManagerService extends SystemService { Manifest.permission.USE_ON_DEVICE_INTELLIGENCE, TAG); synchronized (mLock) { mTemporaryServiceNames = componentNames; + mRemoteInferenceService.unbind(); + mRemoteOnDeviceIntelligenceService.unbind(); mRemoteOnDeviceIntelligenceService = null; mRemoteInferenceService = null; if (mTemporaryHandler == null) { |