Merge "Support starting gsid lazily" am: 4108388601 am: c48af5916b

am: 49311a2242

Change-Id: I1499c37a9687ee1f1535e4e2572e6577e0a42e4d
This commit is contained in:
Howard Chen
2019-03-20 18:10:55 -07:00
committed by android-build-merger

View File

@@ -25,6 +25,7 @@ import android.os.IBinder.DeathRecipient;
import android.os.IDynamicAndroidService;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
import android.util.Slog;
/**
@@ -34,6 +35,7 @@ import android.util.Slog;
public class DynamicAndroidService extends IDynamicAndroidService.Stub implements DeathRecipient {
private static final String TAG = "DynamicAndroidService";
private static final String NO_SERVICE_ERROR = "no gsiservice";
private static final int GSID_ROUGH_TIMEOUT_MS = 8192;
private Context mContext;
private volatile IGsiService mGsiService;
@@ -66,12 +68,27 @@ public class DynamicAndroidService extends IDynamicAndroidService.Stub implement
private IGsiService getGsiService() throws RemoteException {
checkPermission();
synchronized (this) {
if (mGsiService == null) {
mGsiService = connect(this);
}
return mGsiService;
if (!"running".equals(SystemProperties.get("init.svc.gsid"))) {
SystemProperties.set("ctl.start", "gsid");
}
for (int sleepMs = 64; sleepMs <= (GSID_ROUGH_TIMEOUT_MS << 1); sleepMs <<= 1) {
try {
Thread.sleep(sleepMs);
} catch (InterruptedException e) {
Slog.e(TAG, "Interrupted when waiting for GSID");
break;
}
if ("running".equals(SystemProperties.get("init.svc.gsid"))) {
synchronized (this) {
if (mGsiService == null) {
mGsiService = connect(this);
}
return mGsiService;
}
}
}
Slog.e(TAG, "Unable to start gsid");
return null;
}
private void checkPermission() {