Merge "profcollectd: register callback to wait until ETM is ready." am: 0a57fb2b79

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1972401

Change-Id: I3f483e09a51d3fecbc1237a8d707f89aa97da1b6
This commit is contained in:
Yabin Cui
2022-02-09 18:21:42 +00:00
committed by Automerger Merge Worker

View File

@@ -60,6 +60,12 @@ public final class ProfcollectForwardingService extends SystemService {
private static ProfcollectForwardingService sSelfService; private static ProfcollectForwardingService sSelfService;
private final Handler mHandler = new ProfcollectdHandler(IoThread.getHandler().getLooper()); 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) { public ProfcollectForwardingService(Context context) {
super(context); super(context);
@@ -93,13 +99,23 @@ public final class ProfcollectForwardingService extends SystemService {
} }
BackgroundThread.get().getThreadHandler().post(() -> { BackgroundThread.get().getThreadHandler().post(() -> {
if (serviceHasSupportedTraceProvider()) { if (serviceHasSupportedTraceProvider()) {
registerObservers(); registerProviderStatusCallback();
ProfcollectBGJobService.schedule(getContext());
} }
}); });
} }
} }
private void registerProviderStatusCallback() {
if (mIProfcollect == null) {
return;
}
try {
mIProfcollect.registerProviderStatusCallback(mProviderStatusCallback);
} catch (RemoteException e) {
Log.e(LOG_TAG, e.getMessage());
}
}
private boolean serviceHasSupportedTraceProvider() { private boolean serviceHasSupportedTraceProvider() {
if (mIProfcollect == null) { if (mIProfcollect == null) {
return false; 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_BINDER_CONNECT = 0;
public static final int MESSAGE_REGISTER_SCHEDULERS = 1;
@Override @Override
public void handleMessage(android.os.Message message) { public void handleMessage(android.os.Message message) {
@@ -148,6 +165,10 @@ public final class ProfcollectForwardingService extends SystemService {
case MESSAGE_BINDER_CONNECT: case MESSAGE_BINDER_CONNECT:
connectNativeService(); connectNativeService();
break; break;
case MESSAGE_REGISTER_SCHEDULERS:
registerObservers();
ProfcollectBGJobService.schedule(getContext());
break;
default: default:
throw new AssertionError("Unknown message: " + message); throw new AssertionError("Unknown message: " + message);
} }