向きの変更を乗り切るために、以下のライブラリを実装しようとしています: https://github.com/yigit/android-priority-jobqueue
これが私の構成です:
Configuration config = new Configuration.Builder(getApplication())
.consumerKeepAlive(45)
.maxConsumerCount(3)
.minConsumerCount(1)
.build();
return new JobManager(config);
これが私の仕事の例です:
public class CounterJob extends Job {
private int countTo;
protected CounterJob(int countTo, Params params) {
super(params);
this.countTo = countTo;
}
@Override
public void onAdded() {
Log.e("counting to", "" + countTo);
}
@Override
public void onRun() throws Throwable {
Log.e("running job", "" + countTo);
int total = 0;
for (int i = 0; i < countTo; i++) {
total += i;
}
Log.e("total", "" + total);
}
@Override
protected void onCancel(int cancelReason, @Nullable Throwable throwable) {
}
@Override
protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {
return null;
}
}
カウント用の Controller の例を次に示します。
public class CounterController {
private JobManager mJobManager;
public CounterController(JobManager jobManager) {
this.mJobManager = jobManager;
}
public void count(int countTo) {
mJobManager.addJobInBackground(new CounterJob(countTo, new Params(1).requireNetwork().persist()));
}
}
そして、私は次のように呼び出します:
@Override
protected void onResume() {
super.onResume();
mCounterController.count(1000000000);
}
デバイスを回転させると、同じジョブが再び開始されます。したがって、私が間違っていなければ、ネットワーク呼び出しを行っている場合、向きが変わるとリクエストが複製されます。
私の実装に問題があると思います。ライブラリページの例として実装しようとしました。助言がありますか?ありがとう。