Урок 29. WorkManager. Введение

Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 29. WorkManager. Введение

Сообщение damager82 » 13 июн 2018, 22:09

В этом уроке знакомимся с WorkManager.


Click here to read this article!
Последний раз редактировалось damager82 20 дек 2018, 11:55, всего редактировалось 7 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

AntonShinkaretsky
Сообщения: 1
Зарегистрирован: 14 июн 2018, 12:47

Re: Урок 29. WorkManager. Введение

Сообщение AntonShinkaretsky » 14 июн 2018, 13:03

Замечательный материал по фактам. Хотелось бы увидеть субъективное мнение специалиста - для решения каких задач лучше подходит WorkManager, а когда лучше использовать что-то ещё.

Pringle
Сообщения: 1
Зарегистрирован: 08 авг 2018, 00:44

Re: Урок 29. WorkManager. Введение

Сообщение Pringle » 08 авг 2018, 01:13

Ошибка в статье. Worker.Result. А у вас без точки

wasiliysoft
Сообщения: 9
Зарегистрирован: 11 фев 2015, 18:58
Контактная информация:

Re: Урок 29. WorkManager. Введение

Сообщение wasiliysoft » 29 окт 2018, 10:22

Пожалуйста обновите статью, после обновления до worker manager alfa 10 код перестал работать, всю голову сломал как починить не знаю

Dmitry100
Сообщения: 3
Зарегистрирован: 30 дек 2012, 06:30

Re: Урок 29. WorkManager. Введение

Сообщение Dmitry100 » 22 янв 2019, 11:29

wasiliysoft писал(а):Пожалуйста обновите статью, после обновления до worker manager alfa 10 код перестал работать, всю голову сломал как починить не знаю
implementation "android.arch.work:work-runtime:1.0.0-beta02"
отправка файла

Код: Выделить всё

...
Data.Builder builder = new Data.Builder().putString(SendFileWorker.KEY_FILE_PATH, imageFile.getAbsolutePath());
                        OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(SendFileWorker.class).setInputData(builder.build()).build();
                        switchToSendState();
                        WorkManager.getInstance().enqueue(request);
...

jazzz17
Сообщения: 2
Зарегистрирован: 08 мар 2019, 11:09

Re: Урок 29. WorkManager. Введение

Сообщение jazzz17 » 09 мар 2019, 11:30

Очень странно: похоже, OneTimeWorkRequest запускается у меня дважды.

логи:

Код: Выделить всё

2019-03-09 13:48:36.329 30594-30594/com.vsevolodvishnevsky.workmanager D/workmng: onCreate main
2019-03-09 13:48:36.700 30594-30594/com.vsevolodvishnevsky.workmanager D/workmng: onChanged main ENQUEUED
2019-03-09 13:48:36.787 30594-30628/com.vsevolodvishnevsky.workmanager D/workmng: doWork: start pool-1-thread-1
2019-03-09 13:48:36.803 30594-30594/com.vsevolodvishnevsky.workmanager D/workmng: onChanged main RUNNING
2019-03-09 13:48:46.790 30594-30628/com.vsevolodvishnevsky.workmanager D/workmng: doWork: end pool-1-thread-1
2019-03-09 13:48:46.816 30594-30594/com.vsevolodvishnevsky.workmanager D/workmng: onChanged main SUCCEEDED
2019-03-09 13:49:06.807 30594-30631/com.vsevolodvishnevsky.workmanager D/workmng: doWork: start pool-1-thread-2
2019-03-09 13:49:16.809 30594-30631/com.vsevolodvishnevsky.workmanager D/workmng: doWork: end pool-1-thread-2
код активити и myWorker:

Код: Выделить всё

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(MyWorker.TAG, "onCreate " + Thread.currentThread().getName());
        doWork();
    }

    public void doWork() {
        OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(MyWorker.class).build();
        WorkManager.getInstance().enqueue(request);
        LiveData<WorkInfo> info = WorkManager.getInstance().getWorkInfoByIdLiveData(request.getId());
        info.observe(this, new Observer<WorkInfo>() {
            @Override
            public void onChanged(@Nullable WorkInfo workInfo) {
                Log.d(MyWorker.TAG, "onChanged " + Thread.currentThread().getName() + " " + workInfo.getState());
            }
        });
    }
}

Код: Выделить всё

public class MyWorker extends Worker {
   public static final String TAG = "working";

    public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {
        Log.d(TAG, "doWork: start "+ Thread.currentThread().getName());

        try {
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        Log.d(TAG, "doWork: end " + Thread.currentThread().getName());
        return Result.success();
    }
}
причем, при втором запуске статусы уже не приходят...

Ответить