summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2022-02-09 18:09:59 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-02-09 18:09:59 +0000
commit0a57fb2b79e0cbe9546c06a60720c107c855ce16 (patch)
tree5c69dbc7bf9eae8c16e21b0f3de572febc8adfd0
parent6434804c00591131ec26bb6b992ad531136d3075 (diff)
parentcca4059356f8e8e0ea9efeea8dd15fabbfe6f9de (diff)
downloadbase-0a57fb2b79e0cbe9546c06a60720c107c855ce16.tar.gz
Merge "profcollectd: register callback to wait until ETM is ready."
-rw-r--r--services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
index 62a16f7f24fd..c5f990d52b82 100644
--- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
+++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java
@@ -60,6 +60,12 @@ public final class ProfcollectForwardingService extends SystemService {
private static ProfcollectForwardingService sSelfService;
private final Handler mHandler = new ProfcollectdHandler(IoThread.getHandler().getLooper());
+ private IProviderStatusCallback mProviderStatusCallback = new IProviderStatusCallback.Stub() {
+ public void onProviderReady() {
+ mHandler.sendEmptyMessage(ProfcollectdHandler.MESSAGE_REGISTER_SCHEDULERS);
+ }
+ };
+
public ProfcollectForwardingService(Context context) {
super(context);
@@ -93,13 +99,23 @@ public final class ProfcollectForwardingService extends SystemService {
}
BackgroundThread.get().getThreadHandler().post(() -> {
if (serviceHasSupportedTraceProvider()) {
- registerObservers();
- ProfcollectBGJobService.schedule(getContext());
+ registerProviderStatusCallback();
}
});
}
}
+ private void registerProviderStatusCallback() {
+ if (mIProfcollect == null) {
+ return;
+ }
+ try {
+ mIProfcollect.registerProviderStatusCallback(mProviderStatusCallback);
+ } catch (RemoteException e) {
+ Log.e(LOG_TAG, e.getMessage());
+ }
+ }
+
private boolean serviceHasSupportedTraceProvider() {
if (mIProfcollect == null) {
return false;
@@ -141,6 +157,7 @@ public final class ProfcollectForwardingService extends SystemService {
}
public static final int MESSAGE_BINDER_CONNECT = 0;
+ public static final int MESSAGE_REGISTER_SCHEDULERS = 1;
@Override
public void handleMessage(android.os.Message message) {
@@ -148,6 +165,10 @@ public final class ProfcollectForwardingService extends SystemService {
case MESSAGE_BINDER_CONNECT:
connectNativeService();
break;
+ case MESSAGE_REGISTER_SCHEDULERS:
+ registerObservers();
+ ProfcollectBGJobService.schedule(getContext());
+ break;
default:
throw new AssertionError("Unknown message: " + message);
}