summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/test-current.txt8
-rw-r--r--core/java/android/service/ondeviceintelligence/IOnDeviceIntelligenceService.aidl1
-rw-r--r--core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java16
-rw-r--r--services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java3
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) {