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);
|
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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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),
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user