diff options
author | pacien | 2018-08-20 17:46:07 +0200 |
---|---|---|
committer | pacien | 2018-08-20 17:46:07 +0200 |
commit | b321bbe07ff48d571feb4f81c66f58223584dc83 (patch) | |
tree | 83b0cf740091bf1f43dfd9d6249645c6181831c0 /app/src/main/java/org/pacien/tincapp/activities/start | |
parent | 8c47b9d6947a3ff4f75842f874b882471efcab76 (diff) | |
download | tincapp-b321bbe07ff48d571feb4f81c66f58223584dc83.tar.gz |
Generify periodically refreshing live data
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/activities/start')
-rw-r--r-- | app/src/main/java/org/pacien/tincapp/activities/start/NetworkListLiveData.kt | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/activities/start/NetworkListLiveData.kt b/app/src/main/java/org/pacien/tincapp/activities/start/NetworkListLiveData.kt index d0d39b8..aaab0e7 100644 --- a/app/src/main/java/org/pacien/tincapp/activities/start/NetworkListLiveData.kt +++ b/app/src/main/java/org/pacien/tincapp/activities/start/NetworkListLiveData.kt | |||
@@ -18,28 +18,17 @@ | |||
18 | 18 | ||
19 | package org.pacien.tincapp.activities.start | 19 | package org.pacien.tincapp.activities.start |
20 | 20 | ||
21 | import android.arch.lifecycle.LiveData | 21 | import org.pacien.tincapp.activities.common.SelfRefreshingLiveData |
22 | import org.pacien.tincapp.context.AppPaths | 22 | import org.pacien.tincapp.context.AppPaths |
23 | import java.util.* | 23 | import java.util.concurrent.TimeUnit |
24 | import kotlin.concurrent.timer | ||
25 | 24 | ||
26 | /** | 25 | /** |
27 | * @author pacien | 26 | * @author pacien |
28 | */ | 27 | */ |
29 | class NetworkListLiveData : LiveData<List<String>>() { | 28 | class NetworkListLiveData : SelfRefreshingLiveData<List<String>>(1, TimeUnit.SECONDS) { |
30 | private val updateInterval = 2 * 1000L // in milliseconds | ||
31 | private val appPaths = AppPaths | 29 | private val appPaths = AppPaths |
32 | private lateinit var updateTimer: Timer | ||
33 | 30 | ||
34 | override fun onActive() { | 31 | override fun onRefresh() { |
35 | updateTimer = timer(period = updateInterval, action = { updateNetworkList() }) | ||
36 | } | ||
37 | |||
38 | override fun onInactive() { | ||
39 | updateTimer.apply { cancel() }.apply { purge() } | ||
40 | } | ||
41 | |||
42 | private fun updateNetworkList() { | ||
43 | val networkList = appPaths.confDir().list()?.sorted() ?: emptyList() | 32 | val networkList = appPaths.confDir().list()?.sorted() ?: emptyList() |
44 | postValue(networkList) | 33 | postValue(networkList) |
45 | } | 34 | } |