From 60c25fc08d6c5b9f075b649ec2addc0d7c224d9c Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Mon, 24 Apr 2017 12:48:47 +0800 Subject: [PATCH] improved background refresh detection --- .../org/mariotaku/ktextension/ArrayExtensions.kt | 2 +- .../org/mariotaku/twidere/util/TaskServiceRunner.kt | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/ktextension/ArrayExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/ktextension/ArrayExtensions.kt index 39bc40c35..847faef4a 100644 --- a/twidere/src/main/kotlin/org/mariotaku/ktextension/ArrayExtensions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/ktextension/ArrayExtensions.kt @@ -13,7 +13,7 @@ fun Array<*>?.isNullOrEmpty(): Boolean { return this == null || this.isEmpty() } -fun Array.toNulls(): Array { +inline fun Array.toNulls(): Array { @Suppress("UNCHECKED_CAST") return this as Array } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/util/TaskServiceRunner.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/util/TaskServiceRunner.kt index 203ed91f5..a869232d0 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/util/TaskServiceRunner.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/util/TaskServiceRunner.kt @@ -33,6 +33,7 @@ import org.mariotaku.twidere.task.twitter.message.GetMessagesTask class TaskServiceRunner( val context: Context, val preferences: SharedPreferences, + val activityTracker: ActivityTracker, val bus: Bus ) { @@ -62,15 +63,16 @@ class TaskServiceRunner( when (action) { ACTION_REFRESH_HOME_TIMELINE -> { val task = GetHomeTimelineTask(context) - task.params = AutoRefreshTaskParam(context, preferences, + task.params = AutoRefreshTaskParam(context, preferences, activityTracker.isEmpty, AccountPreferences::isAutoRefreshHomeTimelineEnabled) { accountKeys -> - DataStoreUtils.getNewestStatusIds(context, Statuses.CONTENT_URI, accountKeys.toNulls()) + DataStoreUtils.getNewestStatusIds(context, Statuses.CONTENT_URI, + accountKeys.toNulls()) } return task } ACTION_REFRESH_NOTIFICATIONS -> { val task = GetActivitiesAboutMeTask(context) - task.params = AutoRefreshTaskParam(context, preferences, + task.params = AutoRefreshTaskParam(context, preferences, activityTracker.isEmpty, AccountPreferences::isAutoRefreshMentionsEnabled) { accountKeys -> DataStoreUtils.getRefreshNewestActivityMaxPositions(context, Activities.AboutMe.CONTENT_URI, accountKeys.toNulls()) @@ -81,7 +83,7 @@ class TaskServiceRunner( val task = GetMessagesTask(context) task.params = object : GetMessagesTask.RefreshNewTaskParam(context) { - override val isBackground: Boolean = true + override val isBackground: Boolean = activityTracker.isEmpty override val accountKeys: Array by lazy { AccountPreferences.getAccountPreferences(context, preferences, @@ -108,6 +110,7 @@ class TaskServiceRunner( class AutoRefreshTaskParam( val context: Context, val preferences: SharedPreferences, + override val isBackground: Boolean, val refreshable: (AccountPreferences) -> Boolean, val getSinceIds: (Array) -> Array? ) : RefreshTaskParam { @@ -124,7 +127,6 @@ class TaskServiceRunner( SinceMaxPagination().also { it.sinceId = sinceId } } - override val isBackground: Boolean = true } companion object {