I am creating a test app where it increments the value stored in the database every 5 seconds irrespective of whether the app is running or not. So because of this I opted for PeriodicWork Request but the increment happens only when the app is running and not when the app is killed or not running.
Here is my code of Worker class
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();
}
}
Here is my code of 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);
}
}