mirror of
https://github.com/nextcloud/android.git
synced 2024-11-27 09:39:25 +03:00
Add long running task support
Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
parent
be1fed8f84
commit
ef2ebb9176
4 changed files with 38 additions and 1 deletions
|
@ -239,6 +239,12 @@
|
|||
android:exported="false"
|
||||
android:configChanges="orientation|screenLayout|screenSize|keyboardHidden"
|
||||
android:theme="@style/Theme.ownCloud.Media" />
|
||||
<service
|
||||
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
||||
android:directBootAware="false"
|
||||
android:enabled="@bool/enable_system_foreground_service_default"
|
||||
android:exported="false"
|
||||
android:foregroundServiceType="dataSync" />
|
||||
<service
|
||||
android:name=".authentication.AccountAuthenticatorService"
|
||||
android:exported="false">
|
||||
|
|
|
@ -111,7 +111,7 @@ class DownloadNotificationManager(
|
|||
@Suppress("MagicNumber")
|
||||
fun showCompleteNotification(text: String) {
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
updateNotificationText(null,text, true)
|
||||
updateNotificationText(null, text, true)
|
||||
dismissNotification()
|
||||
}, 3000)
|
||||
}
|
||||
|
@ -156,4 +156,12 @@ class DownloadNotificationManager(
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun getId(): Int {
|
||||
return id
|
||||
}
|
||||
|
||||
fun getNotification(): Notification {
|
||||
return notificationBuilder.build()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,8 +36,10 @@ import com.nextcloud.client.account.UserAccountManager
|
|||
import com.nextcloud.java.util.Optional
|
||||
import com.nextcloud.model.WorkerState
|
||||
import com.nextcloud.model.WorkerStateLiveData
|
||||
import com.nextcloud.utils.ForegroundServiceHelper
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.datamodel.FileDataStorageManager
|
||||
import com.owncloud.android.datamodel.ForegroundServiceType
|
||||
import com.owncloud.android.datamodel.OCFile
|
||||
import com.owncloud.android.files.services.IndexedForest
|
||||
import com.owncloud.android.lib.common.OwnCloudAccount
|
||||
|
@ -123,6 +125,14 @@ class FileDownloadWorker(
|
|||
|
||||
addAccountUpdateListener()
|
||||
|
||||
setForegroundAsync(
|
||||
ForegroundServiceHelper.createWorkerForegroundInfo(
|
||||
notificationManager.getId(),
|
||||
notificationManager.getNotification(),
|
||||
ForegroundServiceType.DataSync
|
||||
)
|
||||
)
|
||||
|
||||
requestDownloads.forEach {
|
||||
downloadFile(it)
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import android.app.Notification
|
|||
import android.app.Service
|
||||
import android.os.Build
|
||||
import androidx.core.app.ServiceCompat
|
||||
import androidx.work.ForegroundInfo
|
||||
import com.owncloud.android.datamodel.ForegroundServiceType
|
||||
|
||||
object ForegroundServiceHelper {
|
||||
|
@ -45,4 +46,16 @@ object ForegroundServiceHelper {
|
|||
service.startForeground(id, notification)
|
||||
}
|
||||
}
|
||||
|
||||
fun createWorkerForegroundInfo(
|
||||
id: Int,
|
||||
notification: Notification,
|
||||
foregroundServiceType: ForegroundServiceType
|
||||
): ForegroundInfo {
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
ForegroundInfo(id, notification, foregroundServiceType.getId())
|
||||
} else {
|
||||
ForegroundInfo(id, notification)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue