Java Android WorkManager PeriodicWorkRequest问题--应用程序关闭后不运行

Java Android WorkManager PeriodicWorkRequest问题--应用程序关闭后不运行,java,android-studio,android-workmanager,firebase-job-dispatcher,Java,Android Studio,Android Workmanager,Firebase Job Dispatcher,我一直在尝试从Firebase作业调度器迁移到androidx工作管理器。我的应用程序与Job Dispatcher配合得很好。Work Manager的问题在于,它不会在应用程序关闭后执行定期工作。如果不定期运行工作,用户将无法接收通知 我的应用程序正在Android Studio推出的几个像素模拟器(例如SDK级别30)上进行测试。我期望这些仿真器有股票Android行为。我还使用物理电话进行了测试,发现了同样的问题 我一直在寻找解决办法,但迄今为止运气不佳。你能帮我找出原因和解决办法吗 以

我一直在尝试从Firebase作业调度器迁移到androidx工作管理器。我的应用程序与Job Dispatcher配合得很好。Work Manager的问题在于,它不会在应用程序关闭后执行定期工作。如果不定期运行工作,用户将无法接收通知

我的应用程序正在Android Studio推出的几个像素模拟器(例如SDK级别30)上进行测试。我期望这些仿真器有股票Android行为。我还使用物理电话进行了测试,发现了同样的问题

我一直在寻找解决办法,但迄今为止运气不佳。你能帮我找出原因和解决办法吗

以下是我的Java代码:

    Constraints constraints = new Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .build();

    PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(MyClass.class, 15, TimeUnit.MINUTES)
            .addTag("my_tag")
            .setConstraints(constraints)
            .setInitialDelay(15, TimeUnit.MINUTES)
            .build();

    WorkManager.getInstance(appContext)
            .enqueueUniquePeriodicWork("my_unique_work_name", ExistingPeriodicWorkPolicy.REPLACE, periodicWorkRequest);

    Log.d ( "From Work scheduling procedure...", "periodicWorkRequest enqueued" );
这是我在build.gradle(应用程序级)中的配置


在寻找了一天多的答案后,我通过多次尝试和错误得到了答案。问题不在于我的程序,而在于Logcat的具体行为

在模拟器上关闭应用程序后,我注意到Logcat的进程下拉菜单显示“无可调试进程”。这就是我无法查看调试消息或记录相关定期工作消息的原因。当我重新启动应用程序时,我的应用程序在下拉菜单中重新显示为可调试进程,并且之前执行的所有定期工作项都显示在Logcat中

对于我测试过的一款手机,当我在连接USB电缆的同时关闭手机上的应用程序后,我注意到Logcat的进程下拉菜单仍然将我的应用程序作为可调试进程。我变得更加耐心地等待和观察。我的定期工作调试消息出现

我的定期工作项实际上是在我的模拟器和手机上执行的。我没有在Logcat中看到日志,我认为我的程序运行不正常。我的程序运行良好,但我对Logcat理解不够

我在寻找答案时遇到了许多类似的问题。希望我的回答能帮你们节省一些时间


但是,在我的情况下,我必须使用设备来
自动启动
,然后它才能工作,所以我必须做什么?我也在使用此版本
2.4.0
在我的情况下,我确保已连接的仿真器选择了Logcat中的仿真器下拉菜单。我在模拟器中重新启动了我的应用程序。可调试进程下拉菜单显示我的应用程序包名称。通过正确连接emulator和应用程序,Logcat为WorkManager显示了my Log.d调试消息。
    implementation 'androidx.work:work-runtime:2.4.0'