Android studio 应用程序被终止时WorkManager不工作
我正在创建一个测试应用程序,它每5秒递增存储在数据库中的值,而不管该应用程序是否正在运行。因此,我选择PeriodicWork请求,但增量仅在应用程序正在运行时发生,而不是在应用程序被终止或未运行时发生 这是我的工人阶级代码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
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谢谢你解决了这个问题。