【发布时间】:2019-12-24 20:06:18
【问题描述】:
我正在创建一个测试应用程序,它每 5 秒递增一次存储在数据库中的值,无论应用程序是否正在运行。因此,因此我选择了 PeriodicWork Request 但增量仅在应用程序运行时发生,而不是在应用程序被终止或未运行时发生。
这是我的 Worker 类代码
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();
}
}
这是我的 Mainactivity 代码
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);
}
}
【问题讨论】:
-
PeriodicWorkRequest 的最小间隔为 15 分钟。这是由 WorkManager 在 API 23+ 上使用的 JobScheduler API 规定的。如果您想每 5 秒执行一次操作,最好使用前台服务处理代码中的时间段。
-
@pfmaggi 谢谢解决它。
标签: android-studio android-workmanager