aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend')
-rw-r--r--app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt4
-rw-r--r--app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt2
-rw-r--r--app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt19
3 files changed, 19 insertions, 6 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt b/app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt
index f3fbc70..23a3334 100644
--- a/app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt
+++ b/app/src/main/java/moe/yuuta/workmode/suspend/SuspendTile.kt
@@ -8,7 +8,7 @@ import moe.yuuta.workmode.suspend.data.SuspendedStorage
class SuspendTile : TileService() {
override fun onClick() {
- val storage = SuspendedStorage(this)
+ val storage = SuspendedStorage.get(this)
storage.setStatus(
when (storage.getStatus()) {
Status.ON -> Status.OFF
@@ -21,7 +21,7 @@ class SuspendTile : TileService() {
override fun onStartListening() {
val tile = qsTile
- tile.state = when (SuspendedStorage(this@SuspendTile).getStatus()) {
+ tile.state = when (SuspendedStorage.get(this@SuspendTile).getStatus()) {
Status.ON -> Tile.STATE_ACTIVE
Status.OFF -> Tile.STATE_INACTIVE
}
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt b/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt
index 49924bb..504fdba 100644
--- a/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt
+++ b/app/src/main/java/moe/yuuta/workmode/suspend/Suspender.kt
@@ -29,7 +29,7 @@ class Suspender(private val mContext: Context) {
ApplicationAccessorStarter(mContext).getPackagesSuspendedByWorkMode(true)
fun applyFromSettings() {
- val storage = SuspendedStorage(mContext)
+ val storage = SuspendedStorage.get(mContext)
storage.cleanList(mContext)
val status = storage.getStatus()
val listMode = storage.getListMode()
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt b/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt
index d8cfee7..0a4457b 100644
--- a/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt
+++ b/app/src/main/java/moe/yuuta/workmode/suspend/data/SuspendedStorage.kt
@@ -13,10 +13,23 @@ import java.util.stream.Collectors
/**
* An independent storage of suspended status
*/
-class SuspendedStorage(private val mContext: Context) {
+class SuspendedStorage(mContext: Context) {
private val logger = XLog.tag("Storage").build()
- fun getStorage(): SharedPreferences = mContext.getSharedPreferences("suspended", Context.MODE_PRIVATE)
+ companion object {
+ private lateinit var instance: SuspendedStorage
+
+ fun get(context: Context): SuspendedStorage {
+ if (!::instance.isInitialized) {
+ instance = SuspendedStorage(context)
+ }
+ return instance
+ }
+ }
+
+ private val storage: SharedPreferences = mContext.getSharedPreferences("suspended", Context.MODE_PRIVATE)
+
+ fun getStorage(): SharedPreferences = storage
fun getList(): List<String> = (getStorage().getStringSet("list", setOf()) ?: listOf<String>()).toList()
@@ -56,7 +69,7 @@ class SuspendedStorage(private val mContext: Context) {
}
fun cleanList(context: Context) {
- val installed = mContext.packageManager.getInstalledApplications(0)
+ val installed = context.packageManager.getInstalledApplications(0)
.stream()
.filter(Utils.buildGeneralApplicationInfoFilter(context))
.map {