使用WorkManager的定期工作请求不起作用

Qas*_*ehy 2 android periodicity android-workmanager

我正在尝试编写一个定期的workmanager脚本,但它只是在我打开应用程序时运行它只运行一次(不是定期的)!

这是我的主要活动:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_work);

    Intent intent = new Intent();
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,0,intent,0);
    NotifyWorker.pendingIntent = pendingIntent;
    NotifyWorker.context = this;

    PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(NotifyWorker.class, 1, TimeUnit.MINUTES).build();
    WorkManager.getInstance().enqueue(periodicWorkRequest);
}
Run Code Online (Sandbox Code Playgroud)

}

这是我的dowork方法:

public Result doWork() {
    Log.i("wd","wd");

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context,"ctx")
            .setSmallIcon(R.mipmap.ic_launcher)
            .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),R.mipmap.ic_launcher))
            .setSmallIcon(R.drawable.logo)
            .setContentTitle("Title")
            .setContentText("Desc")
            .setContentIntent(pendingIntent);

    android.app.NotificationManager notificationManager =
            (android.app.NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 , notificationBuilder.build());

    return Result.SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

为什么它不是每1分钟运行一次?我想念的是什么?

ian*_*ake 20

根据PeriodicWorkRequest.Builder文档:

intervalMillis必须大于或等于PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS

该值目前设置为900000- 即15分钟.

  • 哦 !我的错 。下一个问题:为什么我的工作经理触发了 3 或 4 次然后停止工作!我关闭应用程序后它不会继续!关闭应用程序后它应该可以工作,不是吗?!?! (3认同)
  • @ianhanniballake 即使我们杀死了应用程序,工作管理器也会运行吗? (2认同)