3

GCM ネットワーク マネージャーを使用していましたが、Firebase JobDispatcher には GCM とその他の機能が含まれていると聞いたので、それを使用しようとしています。定期的なタスクを正常にプログラムし、正常に動作しましたが、問題は、期間を変更する必要があり、最初から修正されていないことです。

その理由は、私はアクティビティ認識サービスを使用しており、次に JobDispatcher が定期的なタスクを実行するときに、検出された現在のアクティビティに基づくようにしたいからです。たとえば、歩いている場合、次にタスクがトリガーされるのは 30 分後ですが、車に乗っている場合、その期間は 5 分です (主に、車に乗っている場合は携帯電話が無効になる可能性が高いためです)。歩いているときと比べて、短時間で異なる場所の値が提供されます)。

これは、定期的なタスクをプログラムする方法です。固定値を設定していることがわかります。このタスクによってトリガーされるサービスが、タスクの期間を変更するフィードバックを提供できるかどうかを知りたいのです。

 final Builder builder = jobDispatcher.newJobBuilder()
                .setTag(form.tag.get())
                .setRecurring(form.recurring.get())
                .setLifetime(form.persistent.get() ? Lifetime.FOREVER : Lifetime.UNTIL_NEXT_BOOT)
                .setService(DemoJobService.class)
                .setTrigger(Trigger.executionWindow(
                    form.getWinStartSeconds(), form.getWinEndSeconds()))
                .setReplaceCurrent(form.replaceCurrent.get())
                .setRetryStrategy(jobDispatcher.newRetryStrategy(
                    form.retryStrategy.get(),
                    form.getInitialBackoffSeconds(),
                    form.getMaximumBackoffSeconds()));

            if (form.constrainDeviceCharging.get()) {
                builder.addConstraint(Constraint.DEVICE_CHARGING);
            }
            if (form.constrainOnAnyNetwork.get()) {
                builder.addConstraint(Constraint.ON_ANY_NETWORK);
            }
            if (form.constrainOnUnmeteredNetwork.get()) {
                builder.addConstraint(Constraint.ON_UNMETERED_NETWORK);
            }
4

1 に答える 1