am bba948dc: Merge "Delay AccountManagerService initialization" into jb-dev

* commit 'bba948dc9e95baab9e6fb728927aada4a00d93de':
  Delay AccountManagerService initialization
This commit is contained in:
Kenny Root
2012-07-31 11:17:11 -07:00
committed by Android Git Automerger
5 changed files with 34 additions and 7 deletions

View File

@ -220,8 +220,6 @@ public class AccountManagerService
sThis.set(this);
UserAccounts accounts = initUser(0);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
@ -242,6 +240,11 @@ public class AccountManagerService
}, userFilter);
}
public void systemReady() {
mAuthenticatorCache.generateServicesMap();
initUser(0);
}
private UserAccounts initUser(int userId) {
synchronized (mUsers) {
UserAccounts accounts = mUsers.get(userId);

View File

@ -60,4 +60,9 @@ public interface IAccountAuthenticatorCache {
*/
void setListener(RegisteredServicesCacheListener<AuthenticatorDescription> listener,
Handler handler);
/**
* Refreshes the authenticator cache.
*/
void generateServicesMap();
}

View File

@ -132,6 +132,9 @@ public final class ContentService extends IContentService.Stub {
/*package*/ ContentService(Context context, boolean factoryTest) {
mContext = context;
mFactoryTest = factoryTest;
}
public void systemReady() {
getSyncManager();
}
@ -524,7 +527,7 @@ public final class ContentService extends IContentService.Stub {
}
}
public static IContentService main(Context context, boolean factoryTest) {
public static ContentService main(Context context, boolean factoryTest) {
ContentService service = new ContentService(context, factoryTest);
ServiceManager.addService(ContentResolver.CONTENT_SERVICE_NAME, service);
return service;

View File

@ -251,7 +251,7 @@ public abstract class RegisteredServicesCache<V> {
return false;
}
void generateServicesMap() {
public void generateServicesMap() {
PackageManager pm = mContext.getPackageManager();
ArrayList<ServiceInfo<V>> serviceInfos = new ArrayList<ServiceInfo<V>>();
List<ResolveInfo> resolveInfos = pm.queryIntentServices(new Intent(mInterfaceName),

View File

@ -114,6 +114,8 @@ class ServerThread extends Thread {
: Integer.parseInt(factoryTestStr);
final boolean headless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
AccountManagerService accountManager = null;
ContentService contentService = null;
LightsService lights = null;
PowerManagerService power = null;
BatteryService battery = null;
@ -190,14 +192,14 @@ class ServerThread extends Thread {
// The AccountManager must come before the ContentService
try {
Slog.i(TAG, "Account Manager");
ServiceManager.addService(Context.ACCOUNT_SERVICE,
new AccountManagerService(context));
accountManager = new AccountManagerService(context);
ServiceManager.addService(Context.ACCOUNT_SERVICE, accountManager);
} catch (Throwable e) {
Slog.e(TAG, "Failure starting Account Manager", e);
}
Slog.i(TAG, "Content Manager");
ContentService.main(context,
contentService = ContentService.main(context,
factoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL);
Slog.i(TAG, "System Content Providers");
@ -465,6 +467,20 @@ class ServerThread extends Thread {
mountService.waitForAsecScan();
}
try {
if (accountManager != null)
accountManager.systemReady();
} catch (Throwable e) {
reportWtf("making Account Manager Service ready", e);
}
try {
if (contentService != null)
contentService.systemReady();
} catch (Throwable e) {
reportWtf("making Content Service ready", e);
}
try {
Slog.i(TAG, "Notification Manager");
notification = new NotificationManagerService(context, statusBar, lights);