android - 当应用程序在 android 中被杀死时 Workmanager 关闭
问题描述
我使用 WorkManager 中的 AlarmManager。当应用程序处于前台时,AlarmManager 可以正常工作。但是当 App 被杀死时(通过查看最新的应用程序关闭滑动),WorkManager 也被杀死。
工人经理为什么会死?我想要 WorkManager 类似于 Immortal Service。因为我正在制作alarmApp
MainActivity.class onCreate
WorkManager workManager = WorkManager.getInstance();
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(MyWorker.class).build();
workManager.enqueue(workRequest);
MyWorker.class
public class MyWorker extends Worker {
Context context;
Thread thread;
public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
this.context = context;
}
@NonNull
@Override
public Result doWork() {
Log.d("1106", "MyWorker_doWork()");
Calendar calendar = Calendar.getInstance();
Log.d("1106", "" + calendar.getTime());
Intent notiIntent = new Intent(context, NotiReceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
calendar.set(2020, 10, 06, 06, 25, 0);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 2, notiIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent2);
thread = new Thread(new Runnable() {
@Override
public void run() {
int cnt = 0;
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d("1106", cnt++ + "");
}
}
});
thread.start();
return Result.success();
}
}
解决方案
推荐阅读
- php - 获取每个 ID 的最后一条记录
- ember.js - geolib 的导入在 Ember-cli 中不起作用
- javascript - 我正在尝试将 JSON 数据的值存储在 servlet 的数组中,但它显示 post.map 不起作用
- javascript - HTML 多选选项组选择框始终滚动到顶部
- python - 在 Python 中多次创建海龟对象
- python-3.x - 从 SSH 未从字节解码为 ASCII?
- objective-c - 与Objective C等效的stringFromCharCode?
- sql - SQL Server 以小时为单位的时间差为整数
- python - Plotly 3D 散点图在 Google Colab 中的窗口大小非常小
- amazon-redshift - Redshift COPY 命令需要很长时间