Очередь заданий Android onRun() не вызывается при использовании persist()

Я использую Yigits форк библиотеки Path Android Job Queue для выполнения вызовов API. Я сделал простой класс для проверки связи с API. В конструкторе класса я вызываю super () следующим образом:

super(new Params(Priority.LOW).groupBy(GROUP).requireNetwork().persist());

а затем сделать фактический вызов в методе onRun():

@Override
public void onRun() throws Throwable {
    Call<String> request = mAPI.getPing();
    request.enqueue(new PingCallback());
}

Проблема в том, что если я использую.persist () в конструкторе, onRun() никогда не вызывается. Если я уберу его, вызов будет сделан, и все работает. Job является сериализуемым (поскольку он расширяет BaseJob, который, в свою очередь, расширяет Job из библиотеки, которая реализует Serializable), так что это не причина. Метод onAdded() пуст. Может кто-нибудь, пожалуйста, помогите мне с этим.

Спасибо:)

1 ответ

Я подтверждаю. Все объекты, которые вы передаете конструктору (вероятно, все объекты, которые вы используете), должны быть сериализуемыми.

Трюк может заключаться в том, чтобы объявить "временные" объекты, которые не сериализуются (например, Context). Но таким образом вы можете использовать эти объекты только в конструкторе... в onAdded, onRun и т.д... они будут нулевыми.

Другие вопросы по тегам