JobService: new RestartService job
Any calling package like Substratum will be able to restart JobService on demand.
Change-Id: I826efa0a2fb6e062edacf1eb79d0b32905619201
diff --git a/app/src/main/java/masquerade/substratum/services/JobService.java b/app/src/main/java/masquerade/substratum/services/JobService.java
index 94a22d6..b93047a 100644
--- a/app/src/main/java/masquerade/substratum/services/JobService.java
+++ b/app/src/main/java/masquerade/substratum/services/JobService.java
@@ -97,6 +97,7 @@
public static final String COMMAND_VALUE_INSTALL = "install";
public static final String COMMAND_VALUE_UNINSTALL = "uninstall";
public static final String COMMAND_VALUE_RESTART_UI = "restart_ui";
+ public static final String COMMAND_VALUE_RESTART_SERVICE = "restart_service";
public static final String COMMAND_VALUE_CONFIGURATION_SHIM = "configuration_shim";
public static final String COMMAND_VALUE_BOOTANIMATION = "bootanimation";
public static final String COMMAND_VALUE_FONTS = "fonts";
@@ -135,6 +136,7 @@
private MainHandler mMainHandler;
private long mLastJobTime;
private boolean mIsRunning;
+ private boolean mShouldRestartService;
private static IOverlayManager getOMS() {
if (mOMS == null) {
@@ -217,6 +219,8 @@
}
} else if (TextUtils.equals(command, COMMAND_VALUE_RESTART_UI)) {
jobs_to_add.add(new UiResetJob());
+ } else if (TextUtils.equals(command, COMMAND_VALUE_RESTART_SERVICE)) {
+ jobs_to_add.add(new RestartServiceJob());
} else if (TextUtils.equals(command, COMMAND_VALUE_CONFIGURATION_SHIM)) {
jobs_to_add.add(new LocaleChanger(getApplicationContext(), mMainHandler));
} else if (TextUtils.equals(command, COMMAND_VALUE_BOOTANIMATION)) {
@@ -313,7 +317,11 @@
}
@Override
- public void onDestroy() {}
+ public void onDestroy() {
+ if (mShouldRestartService) {
+ startService(new Intent(this, JobService.class));
+ }
+ }
private boolean isProcessing() {
return mJobQueue.size() > 0;
@@ -651,6 +659,11 @@
}
}
+ private void restartService() {
+ mShouldRestartService = true;
+ stopService(new Intent(this, JobService.class));
+ }
+
private Context getSubsContext() {
return getAppContext(SUBSTRATUM_PACKAGE);
}
@@ -828,6 +841,17 @@
}
}
+ private class RestartServiceJob implements Runnable {
+ @Override
+ public void run() {
+ log("Restarting JobService...");
+ Message message = mJobHandler.obtainMessage(JobHandler.MESSAGE_DEQUEUE,
+ RestartServiceJob.this);
+ mJobHandler.sendMessage(message);
+ restartService();
+ }
+ }
+
private class FontsJob implements Runnable {
boolean mClear;
String mPid;