android - 在后台工作有哪些限制?
问题描述
据我所知,Android 允许每 15 分钟定期启动一次服务,并且在打盹模式下在后台工作的最长时间是 10 分钟,但我认为下面的代码避免了这个限制。我对吗?
public class TestWorker extends Worker {
@NonNull
@Override
public WorkerResult doWork() {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
doPeriodicalyWork();
}
}, 0, 5000);
return WorkerResult.SUCCESS;
}
}
解决方案
据我所知,Android 允许每 15 分钟定期启动一次服务
是,对的。
在打盹模式下,在后台工作的最长时间为 10 分钟
虽然我认为我没有看到它记录在案,但我认为这是正确的,是的。
我认为下面的代码避免了这个限制。我对吗?
老实说,我看不出它会避免限制的原因。如果设备已经处于打盹模式,doPeriodicallyWork()
则根本不会执行,因为 CPU 将处于休眠状态。不允许使用唤醒锁。它只会在保持计时器的作业调度程序启动时在维护窗口期间运行。
解决这个问题的最好方法当然是尝试并测试它。但如果你让它发挥作用,我会感到非常惊讶。如果是这样,值得为 Google 提交一个错误 :)
所以,我认为与其尝试破解 Android,不如关注问题的根源。为什么你首先需要这样做?这些限制并不是为了困扰Android开发者,他们是为了从不尊重用户手机资源的开发者手中拯救用户。
推荐阅读
- java - 为什么我的枚举数字列表的主要因素的程序会返回意外的值?
- javascript - 在 Flask 应用程序上获取日期时间数据时出错
- java - JDBI:如何在 sql 语句中将 Java Long 转换为 postgresql“bigint”?
- snowflake-cloud-data-platform - net.snowflake.client.jdbc.internal.apache.http.impl.execchain.RetryExec:执行 DDL 时出现 I/O 异常
- android - 在旧源代码上添加 firebase 分析,重复条目:com/google/android/gms/security/ProviderInstaller
- .htaccess - .htaccess 规则在 GoDaddy 服务器上不起作用
- corda - 在 Corda 中,接收方如何在事务中验证数据的完整性以便接收方接受该事务?
- r - 跨多个评估者的混淆矩阵
- r - 当我使用 replace_names 删除使用 R、textclean、stringr 的名称时出现额外空格?
- shell - 在 Shell 脚本中搜索文件的特定部分并将其复制到另一个文件