Мое приложение зависает, когда я выполняю сетевой запрос в фоновом потоке (используя CoroutineWorker & Work manager) - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь установить обои на периодической основе, и для этого я использую Диспетчер работ.Когда я выполняю сетевой запрос из фонового потока (CoroutineWorker), пользовательский интерфейс моего приложения останавливается до завершения сетевого запроса и установки обоев.

Я уже пытался выполнить это с помощью Async Task, но безрезультатно.

@WorkerThread
override suspend fun doWork(): Result = coroutineScope {
    try {
 MainService.createRetrofitService().getRandomPhoto(map)
            .enqueue(object : Callback<RandomPhotoModel> {
                override fun onFailure(call: Call<RandomPhotoModel>, t: Throwable) {
                    Log.e(Constants.Tag, t.localizedMessage)
                }

                override fun onResponse(call: Call<RandomPhotoModel>, response: Response<RandomPhotoModel>) {
                    if (response.isSuccessful) {
                        Glide.with(appContext).asBitmap().load(checkAndReturnImage(response.body()!!))
                            .into(object : SimpleTarget<Bitmap>() {
                                override fun onResourceReady(
                                    resource: Bitmap,
                                    transition: Transition<in Bitmap>?
                                ) {
                                    val wallpaperManager = WallpaperManager.getInstance(applicationContext)
                                    wallpaperManager.setBitmap(resource)
                                }
                            })
                    }
                }

            })}catch (throwable: Throwable) {
        Log.e(Constants.Tag, "Error applying wallpaper", throwable)
        Result.failure()
    } catch (e: Exception) {
        Log.e(Constants.Tag, "Error applying wallpaper")
        Result.failure()
    }

Я ожидаю, что приложение не должно зависать при выполнении сетевого запроса или установке обоев в фоновом режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...