Merge "Use SystemService lifecycle API in input method service"
diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index 798a04a..4a123df 100644
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -742,6 +742,31 @@
}
}
+ public static final class Lifecycle extends SystemService {
+ private InputMethodManagerService mService;
+
+ public Lifecycle(Context context) {
+ super(context);
+ mService = new InputMethodManagerService(context);
+ }
+
+ @Override
+ public void onStart() {
+ LocalServices.addService(InputMethodManagerInternal.class,
+ new LocalServiceImpl(mService.mHandler));
+ publishBinderService(Context.INPUT_METHOD_SERVICE, mService);
+ }
+
+ @Override
+ public void onBootPhase(int phase) {
+ if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) {
+ StatusBarManagerService statusBarService = (StatusBarManagerService) ServiceManager
+ .getService(Context.STATUS_BAR_SERVICE);
+ mService.systemRunning(statusBarService);
+ }
+ }
+ }
+
public InputMethodManagerService(Context context) {
mIPackageManager = AppGlobals.getPackageManager();
mContext = context;
@@ -894,7 +919,6 @@
}
}
}, filter);
- LocalServices.addService(InputMethodManagerInternal.class, new LocalServiceImpl(mHandler));
}
private void resetDefaultImeLocked(Context context) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 8114031..c186a12 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -602,7 +602,6 @@
StatusBarManagerService statusBar = null;
INotificationManager notification = null;
- InputMethodManagerService imm = null;
WallpaperManagerService wallpaper = null;
LocationManagerService location = null;
CountryDetectorService countryDetector = null;
@@ -613,14 +612,7 @@
// Bring up services needed for UI.
if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
- traceBeginAndSlog("StartInputMethodManagerService");
- try {
- imm = new InputMethodManagerService(context);
- ServiceManager.addService(Context.INPUT_METHOD_SERVICE, imm);
- } catch (Throwable e) {
- reportWtf("starting Input Manager Service", e);
- }
- Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+ mSystemServiceManager.startService(InputMethodManagerService.Lifecycle.class);
traceBeginAndSlog("StartAccessibilityManagerService");
try {
@@ -1207,7 +1199,6 @@
final ConnectivityService connectivityF = connectivity;
final NetworkScoreService networkScoreF = networkScore;
final WallpaperManagerService wallpaperF = wallpaper;
- final InputMethodManagerService immF = imm;
final LocationManagerService locationF = location;
final CountryDetectorService countryDetectorF = countryDetector;
final NetworkTimeUpdateService networkTimeUpdaterF = networkTimeUpdater;
@@ -1304,11 +1295,6 @@
reportWtf("Notifying WallpaperService running", e);
}
try {
- if (immF != null) immF.systemRunning(statusBarF);
- } catch (Throwable e) {
- reportWtf("Notifying InputMethodService running", e);
- }
- try {
if (locationF != null) locationF.systemRunning();
} catch (Throwable e) {
reportWtf("Notifying Location Service running", e);