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

View File

@ -60,4 +60,9 @@ public interface IAccountAuthenticatorCache {
*/ */
void setListener(RegisteredServicesCacheListener<AuthenticatorDescription> listener, void setListener(RegisteredServicesCacheListener<AuthenticatorDescription> listener,
Handler handler); 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) { /*package*/ ContentService(Context context, boolean factoryTest) {
mContext = context; mContext = context;
mFactoryTest = factoryTest; mFactoryTest = factoryTest;
}
public void systemReady() {
getSyncManager(); 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); ContentService service = new ContentService(context, factoryTest);
ServiceManager.addService(ContentResolver.CONTENT_SERVICE_NAME, service); ServiceManager.addService(ContentResolver.CONTENT_SERVICE_NAME, service);
return service; return service;

View File

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

View File

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