am bba948dc
: Merge "Delay AccountManagerService initialization" into jb-dev
* commit 'bba948dc9e95baab9e6fb728927aada4a00d93de': Delay AccountManagerService initialization
This commit is contained in:
@ -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);
|
||||
|
@ -60,4 +60,9 @@ public interface IAccountAuthenticatorCache {
|
||||
*/
|
||||
void setListener(RegisteredServicesCacheListener<AuthenticatorDescription> listener,
|
||||
Handler handler);
|
||||
|
||||
/**
|
||||
* Refreshes the authenticator cache.
|
||||
*/
|
||||
void generateServicesMap();
|
||||
}
|
@ -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;
|
||||
|
@ -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),
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user