diff options
author | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-03-01 20:02:53 -0800 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-03-01 20:02:53 -0800 |
commit | c66fc0136b1504cf1f15dd9963fad3a10fcd52e9 (patch) | |
tree | a3da820059b4d0d6f79572e146b512f8e5eb73ca /app/src/main/java/moe/yuuta/workmode/suspend | |
parent | e6cc81e32a44dde2a73f045bd27e72bcb911fbdd (diff) | |
download | WorkMode-c66fc0136b1504cf1f15dd9963fad3a10fcd52e9.tar WorkMode-c66fc0136b1504cf1f15dd9963fad3a10fcd52e9.tar.gz WorkMode-c66fc0136b1504cf1f15dd9963fad3a10fcd52e9.tar.bz2 WorkMode-c66fc0136b1504cf1f15dd9963fad3a10fcd52e9.zip |
refactor(app): make a static instance for Storage
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend')
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 { |