Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 июл 2019, 01:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 25 июн 2018, 10:38 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке рассмотрим как передать данные в задачу и как получить результат




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 25 июн 2018, 12:54, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 дек 2018, 09:48 

Зарегистрирован: 07 дек 2018, 18:05
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день.

Как лучше быть в ситуации, когда мы описываем одни и теже входные данные для инициализации нескольких WorkRequest, но с небольшими отличиями? Напимер:

Код: [ Загрузить ] [ Скрыть ]
  1. Data myData1 = new Data.Builder() 
  2.        .putInt("keyWorkInd", 1) 
  3.        .putInt("keyWorkTime", 3000) 
  4.        .build(); 
  5.  
  6. Data myData2 = new Data.Builder() 
  7.        .putInt("keyWorkInd", 2) 
  8.        .putInt("keyWorkTime", 3000) 
  9.        .build(); 
  10.  
  11. Data myData3 = new Data.Builder() 
  12.        .putInt("keyWorkInd", 3) 
  13.        .putInt("keyWorkTime", 3000) 
  14.        .build(); 
  15.  
  16. Data myData4 = new Data.Builder() 
  17.        .putInt("keyWorkInd", 4) 
  18.        .putInt("keyWorkTime", 3000) 
  19.        .build(); 
  20.  
  21. Data myData5 = new Data.Builder() 
  22.        .putInt("keyWorkInd", 5) 
  23.        .putInt("keyWorkTime", 3000) 
  24.        .build(); 


Нужно ли создавать все эти объекты? Или есть уже какой-нибудь встроенный способ, что бы менялся 1 входной параметр?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 дек 2018, 10:49 

Зарегистрирован: 07 дек 2018, 18:05
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я попробовал сделать так:
Код: [ Загрузить ] [ Скрыть ]
  1.  
  2.        OneTimeWorkRequest[] arrayMyWorkRequest = new OneTimeWorkRequest[5] ; 
  3.  
  4.         for (int i=0; i<5; i++){ 
  5.             arrayMyWorkRequest[i] = new OneTimeWorkRequest.Builder(MyWorker.class).addTag("myWork") 
  6.                     .setInputData(new Data.Builder().putInt("TimeWork",3).putInt("KeyWorkInd",i).build()) 
  7.                     .build(); 
  8.         } 
  9.  
  10.  
  11.         mRunnable = new Runnable() { 
  12.             public void run() { 
  13.                 // вычисляем время 
  14.                 Log.d(TAG,"mRunnable"); 
  15.                 WorkManager.getInstance() 
  16.                         .beginUniqueWork("work123", ExistingWorkPolicy.KEEP, arrayMyWorkRequest[0]) 
  17.                         .then(arrayMyWorkRequest[1]) 
  18.                         .then(arrayMyWorkRequest[2]) 
  19.                         .then(arrayMyWorkRequest[3]) 
  20.                         .then(arrayMyWorkRequest[4]) 
  21.                         .enqueue(); 
  22.  
  23.             } 
  24.         }; 
  25.  
  26.         mHandler.postDelayed(mRunnable, 1000); 
  27.         mHandler.postDelayed(mRunnable, 10000); 
  28.  


Но в логах появляется слово "crash":

2018-12-21 10:50:12.893 14964-14964/ru.vanyaivan.myapplicationworkmanager D/working: mRunnable
2018-12-21 10:50:12.961 14964-14989/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker0: start
2018-12-21 10:50:15.961 14964-14989/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker0: end
2018-12-21 10:50:15.984 14964-14995/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker1: start
2018-12-21 10:50:18.985 14964-14995/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker1: end
2018-12-21 10:50:19.000 14964-14996/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker2: start
2018-12-21 10:50:21.893 14964-14964/ru.vanyaivan.myapplicationworkmanager D/working: mRunnable

--------- beginning of crash
2018-12-21 10:50:52.152 15032-15058/? D/working: MyWorker2: start
2018-12-21 10:50:55.193 15032-15058/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker2: end
2018-12-21 10:50:55.209 15032-15063/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker3: start
2018-12-21 10:50:58.249 15032-15063/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker3: end
2018-12-21 10:50:58.266 15032-15068/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker4: start
2018-12-21 10:51:01.284 15032-15068/ru.vanyaivan.myapplicationworkmanager D/working: MyWorker4: end

Скорей всего это происходит из-за KEEP, если его заменить на REPLACE, то все происходит как на уроке, где демонстрировалась работа при использовании REPLACE.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB