am 3bb060b5: am 3da1e329: Fix bug where provisioning service could be started twice.
* commit '3bb060b5099122f4a0d8dd1ed211857d85ef72d3':
Fix bug where provisioning service could be started twice.
diff --git a/src/com/android/managedprovisioning/ManagedProvisioningService.java b/src/com/android/managedprovisioning/ManagedProvisioningService.java
index 10a4e3f..4089468 100644
--- a/src/com/android/managedprovisioning/ManagedProvisioningService.java
+++ b/src/com/android/managedprovisioning/ManagedProvisioningService.java
@@ -37,6 +37,7 @@
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo;
+import android.os.AsyncTask;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
@@ -76,6 +77,16 @@
private UserManager mUserManager;
private int mStartIdProvisioning;
+ private AsyncTask<Intent, Object, Void> runnerTask;
+
+ private class RunnerTask extends AsyncTask<Intent, Object, Void> {
+ @Override
+ protected Void doInBackground(Intent ... intents) {
+ initialize(intents[0]);
+ startManagedProfileProvisioning();
+ return null;
+ }
+ }
@Override
public void onCreate() {
@@ -85,19 +96,20 @@
mIpm = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
+
+ runnerTask = new RunnerTask();
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
+
ProvisionLogger.logd("Starting managed provisioning service");
- mStartIdProvisioning = startId;
- new Thread(new Runnable() {
- @Override
- public void run() {
- initialize(intent);
- startManagedProfileProvisioning();
- }
- }).start();
+ try {
+ runnerTask.execute(intent);
+ } catch (IllegalStateException ex) {
+ ProvisionLogger.logd("ManagedProvisioningService: Provisioning already in progress, "
+ + "second provisioning intent not being processed");
+ }
return START_NOT_STICKY;
}
@@ -315,7 +327,7 @@
LocalBroadcastManager.getInstance(this).sendBroadcast(successIntent);
sendProvisioningCompleteToManagedProfile(this);
- stopSelf(mStartIdProvisioning);
+ stopSelf();
}
private void error(String logMessage) {
@@ -324,7 +336,7 @@
intent.putExtra(EXTRA_LOG_MESSAGE_KEY, logMessage);
sendBroadcast(intent);
cleanup();
- stopSelf(mStartIdProvisioning);
+ stopSelf();
}
/**
@@ -342,4 +354,9 @@
public IBinder onBind(Intent intent) {
return null;
}
+
+ @Override
+ public void onDestroy() {
+ ProvisionLogger.logd("ManagedProvisioningService ONDESTROY");
+ }
}