使用persist()时未调用Android作业队列onRun()

时间:2016-01-26 10:14:18

标签: java android android-priority-jobqueue

我正在使用Path Android Job Queue库的Yigits fork进行API调用。我做了一个简单的类来ping 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,后者又从lib扩展了Job,它实现了Serializable),所以这不是原因。 onAdded()方法为空。任何人都可以帮我解决这个问题。

谢谢:)

1 个答案:

答案 0 :(得分:2)

我确认。 传递给构造函数的所有对象(可能是您使用的所有对象)都必须是Serializable。

一个技巧可能是取消“ transient ”不可序列化的对象(例如Context)。但是这样你只能在构造函数中使用这个对象...在onAdded,onRun等......它们将为null。