android-studio - 当应用程序被杀死时 WorkManager 不工作
问题描述
我正在创建一个测试应用程序,无论应用程序是否正在运行,它都会每 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);
}
}
解决方案
也请看看这篇文章。在这些品牌中,由于操作系统的大量定制,默认情况下,当应用程序被杀死时,所有前台服务和工作管理器都不会工作。我遇到了同样的问题,经过大量研究,终于找到了解决方案。您必须启用自动启动,您的应用程序才能在它被杀死时执行。因此,您必须提示用户启用该设置。在帖子中,您必须在每个品牌中触发具有适当操作的必需意图。
推荐阅读
- bash - 根据里面的内容重命名bash中的文件
- sql - 您能否查看 SQL Server CTE 不起作用?
- html - 将特定的身体类别带入每一页| WordPress
- c - FIFO 有时不会在所有进程中读取 + 尝试冻结程序时进程 2 死机
- html - R markdown 中 kableExtra 表的弹出框/工具提示中的换行符
- powershell - 供应商/发行商卸载 Powershell
- kubernetes - Kubernetes 中的工作节点可以运行两个不同的 Pod 吗?
- node.js - 如何访问 Heroku 的默认 MongoDB 数据库。我在没有任何 mongo 字符串的情况下上传到 Heroku
- firebase - Flutter 的 Firestore 错误代码列表
- microsoft-graph-api - 在所有用户的频道消息中搜索