Use SystemService lifecycle API in input method service

Change-Id: Ic17667df60b30e5355b61a3601ad27a000cab3a3
This commit is contained in:
Fyodor Kupolov
2016-01-21 12:02:58 -08:00
parent bcd2b7179a
commit 1e33dc8fdf
2 changed files with 26 additions and 16 deletions

View File

@@ -742,6 +742,31 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
}
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 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
}
}
}, filter);
LocalServices.addService(InputMethodManagerInternal.class, new LocalServiceImpl(mHandler));
}
private void resetDefaultImeLocked(Context context) {

View File

@@ -570,7 +570,6 @@ public final class SystemServer {
StatusBarManagerService statusBar = null;
INotificationManager notification = null;
InputMethodManagerService imm = null;
WallpaperManagerService wallpaper = null;
LocationManagerService location = null;
CountryDetectorService countryDetector = null;
@@ -581,14 +580,7 @@ public final class SystemServer {
// 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 {
@@ -1167,7 +1159,6 @@ public final class SystemServer {
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;
@@ -1263,11 +1254,6 @@ public final class SystemServer {
} catch (Throwable e) {
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) {