我已经编写了在后台检查每分钟条件的应用程序,如果它是真的,那么它将发送通知/振动。
它工作正常,但只有当我的手机处于活动状态时(意味着屏幕未锁定)。
我尝试了许多解决方案,例如使用 Services、JobSchedule、WorkManager(当前),但它们似乎不起作用。WorkManager 代码的行为是这样的:
(手机屏幕锁定时)
- 分钟 1: 发送通知
- 分钟 2: 发送通知
- 分钟 3: 没有
- 4分钟:没有
- ……
(打开屏幕)
出现大量通知,例如任务在锁定时运行,但仅在解锁屏幕时显示
谁可以帮我这个事?我正在使用 OnePlus 9 Pro 进行测试
代码片段
public class MyService extends Worker {
Timer myTimer;
TimerTask doThis;
private DBHelper mydb;
public MyService(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@Override
public Result doWork() {
StrictMode.setThreadPolicy(new Builder().permitAll().build());
mydb = new DBHelper(getApplicationContext());
// Let it continue running until it is stopped.
myTimer = new Timer();
int delay = 0; // delay for 0 sec.
int period = 1000*60; // repeat every 60 sec.
doThis = new TimerTask() {
public void run() {
//Some task
if (true) {
notify("aaaa");
Log.e("OK", "Match!");
}
...
myTimer.schedule(doThis, delay, period);
return Result.success();
}