Android studio 应用程序被终止时WorkManager不工作

Android studio 应用程序被终止时WorkManager不工作,android-studio,android-workmanager,Android Studio,Android Workmanager,我正在创建一个测试应用程序,它每5秒递增存储在数据库中的值,而不管该应用程序是否正在运行。因此,我选择PeriodicWork请求,但增量仅在应用程序正在运行时发生,而不是在应用程序被终止或未运行时发生 这是我的工人阶级代码 public class MuWorker extends Worker { public int inValue; DatabaseAccess databaseAccess; public MuWorker(@NonNull Context c

我正在创建一个测试应用程序,它每5秒递增存储在数据库中的值,而不管该应用程序是否正在运行。因此,我选择PeriodicWork请求,但增量仅在应用程序正在运行时发生,而不是在应用程序被终止或未运行时发生

这是我的工人阶级代码

public class MuWorker extends Worker {
    public int inValue;
    DatabaseAccess databaseAccess;

    public MuWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {

        databaseAccess = DatabaseAccess.getInstance(getApplicationContext());
        databaseAccess.open();
        inValue = databaseAccess.readValue();
        databaseAccess.close();

        inValue=inValue+1;
        databaseAccess=DatabaseAccess.getInstance(getApplicationContext());
        databaseAccess.open();
        databaseAccess.updateValue(inValue);
        databaseAccess.close();

        return Result.success();
    }

}
这是我的主要活动代码

public class MainActivity extends AppCompatActivity {

    TextView t1;
    DatabaseAccess databaseAccess;

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

        WorkManager mWorkManager = WorkManager.getInstance();

        final PeriodicWorkRequest periodicWorkRequest
                = new PeriodicWorkRequest.Builder(MuWorker.class, 4, TimeUnit.SECONDS)
                .build();

        int value = 0;

        databaseAccess = DatabaseAccess.getInstance(getApplicationContext());
        databaseAccess.open();
        value = databaseAccess.readValue();
        databaseAccess.close();

        t1 = findViewById(R.id.text);
        t1.setText("" + value);

        mWorkManager.enqueue(periodicWorkRequest);
    }
}

请再看看这个。 在这些品牌中,由于操作系统的大量定制,默认情况下,当应用程序被终止时,所有前台服务和工作管理器都不工作。 我也有同样的问题,经过大量的研究,我终于找到了解决办法。 必须启用自动启动,应用程序才能在终止时执行。 因此,必须提示用户启用该设置。
在帖子中,每个品牌都有必须的意图和正确的行动。

周期性工作请求的最小间隔为15分钟。这由API 23+上WorkManager使用的JobScheduler API决定。如果你想每5秒做一件事,最好用前台服务处理代码中的时间段。@pfmaggi谢谢你解决了这个问题。