[英]Replace JobService() by Kotlin Coroutines?
有一個
@ExperimentalUnsignedTypes
class SomeNotification : JobService() {
@SuppressLint("CommitPrefEdits")
override fun onStartJob(params: JobParameters?): Boolean {
//..
}
override fun onStopJob(params: JobParameters?): Boolean {
//..
}
}
我可以在這里使用協程而不是 Jobservice 嗎?
我也不明白 JobService 評論:
這意味着您必須將執行邏輯卸載到您選擇的 * 另一個線程/處理程序/{@link android.os.AsyncTask}。
您可以使用WorkManager
執行此操作
def work_version = "2.3.4"
// Kotlin + coroutines
implementation "androidx.work:work-runtime-ktx:$work_version"
class CoroutineDownloadWorker(context: Context, params: WorkerParameters) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result = coroutineScope {
val jobs = (0 until 100).map {
async {
downloadSynchronously("https://www.google.com")
}
}
// awaitAll will throw an exception if a download fails, which CoroutineWorker will treat as a failure
jobs.awaitAll()
Result.success()
}
private suspend fun showNotification(progress: Int) {
setForeground(
ForegroundInfo(
notificationId,
NotificationCompat.Builder(appContext, channelId)
.setContentTitle(appContext.getString(R.string.app_name))
.setProgress(100, progress, false)
.setContentText(appContext.getString(R.string.content_text))
.setAutoCancel(false)
.setSmallIcon(R.drawable.ic_notification)
.setColor(ContextCompat.getColor(appContext, R.color.colorPrimary))
.build()
)
)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.