12

コードをバックグラウンドで実行する Android アプリケーションを作成しています。Android Oreo によってバックグラウンド サービスに導入された制限についてはよく理解しています。そのため、WorkManager API を使用してタスクの実行をスケジュールしています。Android API 24 (Nougat) を使用して Mi Max デバイスでコードをテストしており、自動起動を手動で有効にして、MIUI がアプリをバックグラウンドで実行できるようにしていますが、問題は、WorkManager がアプリケーションの起動時に初めて起動することです。その後、それは機能しません。以下は、定期的な作業要求と作業自体に使用している私のコードです。

PeriodicWorkRequest 呼び出し:

PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(ClassExtendingWorker.class, 15, TimeUnit.MINUTES)
            .setConstraints(Constraints.NONE)
            .build();
WorkManager.getInstance().enqueue(work);

ClassExtendingWorker:

public Result doWork() {
    /*--- SHOWING NOTIFICATION AS AN EXAMPLE TASK TO BE EXECUTED ---*/
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), "")
            .setSmallIcon(R.drawable.common_google_signin_btn_icon_light)
            .setContentTitle("TestApp")
            .setContentText("Code executed")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(getApplicationContext());
    notificationManager.notify(1234, mBuilder.build());

    return Result.SUCCESS;
}
4

4 に答える 4

5

WorkManager のバージョンを1.0.0-alpha04に更新します。ここでリリースノートを確認できます

また、このPeriodicWorkRequest GitHub デモを参照して、要件に従って TimeUnit を更新してくださいDayIncrementViewModel.java。必要に応じて機能します。

WorkManager はまだアルファ版であるため、最終バージョンがリリースされると、すべてのデバイスで完全に機能します。

于 2018-07-02T12:05:24.263 に答える