web-dev-qa-db-ja.com

WorkManagerのPeriodicWorkRequestは1回実行され、繰り返されていません

WorkManagerを利用しようとしていますが、PeriodicSyncが起動時に1回しか繰り返されないという問題が発生しているようですが、それだけです。

私はこの投稿を見ました WorkManagerのPeriodicWorkRequestは本当に誰かのために繰り返されていますか? しかしそこに答えはありません。最新のアルファビルド10も使用しています。

誰かが助けてくれるなら、それは大いにありがたいです。私はまだAndroidに慣れていませんが、これをプロジェクトで機能させる必要があります。必要なコードで使用しようとはしていませんが、単に正しく実行しようとしています。

10秒ごとに実行するように設定しました。10,000ミリ秒も試しましたが、どちらも機能せず、10秒後に何も起こりませんでした。

ログメッセージ「同期」は、Createで1回だけ表示され、それだけです。

私が抱えているもう1つの問題は、アプリを起動するたびに、ワーカーの数が増えているように見えることです。まるで、ワーカーが互いに積み重なっているかのようで、それが関連しているかどうかはわかりません。 私の他の問題への回答が見つかりました ここ しかし、私はまだ私の主要な問題について助けが必要です。

これが私のコードです:

労働者クラス

public class MyWorker2 extends Worker {

    private static final String TAG = "BOOGABOOGA";

    public MyWorker2(
            @NonNull Context context,
            @NonNull WorkerParameters params) {
        super(context, params);
    }

    @Override
    public Worker.Result doWork() {

        // Do the work here--in this case, compress the stored images.
        // In this example no parameters are passed; the task is
        // assumed to be "compress the whole library."
        Log.i(TAG, "Sync");

        // Indicate success or failure with your return value:
        return Result.SUCCESS;

    }
}

主な活動

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        PeriodicWorkRequest syncWork = new PeriodicWorkRequest.Builder(MyWorker2.class, 10, TimeUnit.SECONDS).build();
        WorkManager.getInstance().enqueue(syncWork);

    }
}

編集:これが機能しない理由は、タスクを繰り返すための最小間隔が、ここにある仕様に従って15分に設定されているためです: https://developer.Android.com/reference/androidx/work/PeriodicWorkRequest ==

6
GevDev

これが機能しなかった理由は、タスクを繰り返すことができる最小時間間隔が15分に設定されているためです。クレジットは exshinigami に送られます。この仕様はここにあります: https://developer.Android.com/reference/androidx/work/PeriodicWorkRequest#min_periodic_interval_millis

15分後に実際に繰り返されることをテストして確認しました。

15
GevDev