Last active
September 17, 2021 00:25
-
-
Save luk1337/4d5c4d8cf6b37ec5148ac99c1fb5ab3c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/src/main/java/com/ubergeek42/WeechatAndroid/WeechatActivity.kt b/app/src/main/java/com/ubergeek42/WeechatAndroid/WeechatActivity.kt | |
index 8dc5fab4..dc79664e 100644 | |
--- a/app/src/main/java/com/ubergeek42/WeechatAndroid/WeechatActivity.kt | |
+++ b/app/src/main/java/com/ubergeek42/WeechatAndroid/WeechatActivity.kt | |
@@ -205,6 +205,16 @@ class WeechatActivity : AppCompatActivity(), CutePageChangeListener, | |
ThemeFix.fixIconAndColor(this) | |
} | |
+ @MainThread @CatD public override fun onPause() { | |
+ super.onPause() | |
+ RelayService.startWithAction(this, RelayService.ACTION_PAUSE) | |
+ } | |
+ | |
+ @MainThread @CatD public override fun onResume() { | |
+ super.onResume() | |
+ RelayService.startWithAction(this, RelayService.ACTION_RESUME) | |
+ } | |
+ | |
@MainThread @CatD(linger = true) fun connect() { | |
P.loadConnectionPreferences() | |
val error = P.validateConnectionPreferences() | |
diff --git a/app/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java b/app/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java | |
index 86866b11..1634d469 100644 | |
--- a/app/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java | |
+++ b/app/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java | |
@@ -69,6 +69,7 @@ public class RelayService extends Service implements IObserver { | |
volatile public RelayConnection connection; | |
private PingActionReceiver ping; | |
private Handler doge; // thread "doge" used for connecting/disconnecting | |
+ private Handler cate; // thread "cate" used for pause/resume | |
// action is one of ACTION_START or ACTION_STOP | |
// see https://stackoverflow.com/a/47654126/1449683 regarding the version check | |
@@ -98,6 +99,7 @@ public class RelayService extends Service implements IObserver { | |
HandlerThread handlerThread = new HandlerThread("d-" + iteration); | |
handlerThread.start(); | |
doge = new Handler(handlerThread.getLooper()); | |
+ cate = new Handler(handlerThread.getLooper()); | |
Network.get().register(this, () -> { | |
if (P.reconnect && state.contains(STATE.STARTED)) _start(); | |
@@ -112,6 +114,7 @@ public class RelayService extends Service implements IObserver { | |
P.saveStuff(); | |
Network.get().unregister(this); | |
doge.post(() -> doge.getLooper().quit()); | |
+ cate.post(() -> cate.getLooper().quit()); | |
} | |
@MainThread @Nullable @Override public IBinder onBind(Intent intent) { | |
@@ -125,6 +128,8 @@ public class RelayService extends Service implements IObserver { | |
final public static String ACTION_START = "com.ubergeek42.WeechatAndroid.START"; | |
final public static String ACTION_STOP = "com.ubergeek42.WeechatAndroid.STOP"; | |
+ final public static String ACTION_PAUSE = "com.ubergeek42.WeechatAndroid.PAUSE"; | |
+ final public static String ACTION_RESUME = "com.ubergeek42.WeechatAndroid.RESUME"; | |
// this method is called: | |
// * whenever app calls startService() (that means on each screen rotate) | |
@@ -135,10 +140,20 @@ public class RelayService extends Service implements IObserver { | |
P.loadConnectionPreferences(); | |
start(); | |
} | |
+ } else if (ACTION_RESUME.equals(intent.getAction())) { | |
+ cate.removeCallbacksAndMessages(null); | |
+ if (state.contains(STATE.STOPPED)) { | |
+ P.loadConnectionPreferences(); | |
+ start(); | |
+ } | |
} else if (ACTION_STOP.equals(intent.getAction())) { | |
if (!state.contains(STATE.STOPPED)) { | |
stop(); | |
} | |
+ } else if (ACTION_PAUSE.equals(intent.getAction())) { | |
+ if (!state.contains(STATE.STOPPED)) { | |
+ cate.postDelayed(this::stop, 60000 * 5 /* 5 minutes */); | |
+ } | |
} | |
return START_STICKY; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment