gpt4 book ai didi

java - 后台任务的IntentService

转载 作者:行者123 更新时间:2023-12-01 12:24:57 25 4
gpt4 key购买 nike

我计划使用 IntentService 进行一些处理。该服务从 list 中注册的广播接收器启动。该服务必须更新数据库,因此操作可能会很长(甚至一分钟)。对于CPU我可以使用唤醒锁,但是对于操作系统呢?

  1. 是否可以在 IntentService 上调用 startForeground?
  2. 杀死后会再次创建intentservice吗?默认行为是什么? START_STICKY?
  3. 服务抢一个db锁(ReentrantReadWrite java锁)以避免并发访问,如果服务被杀死,锁会被释放吗?如果没有,我该怎么办?

最佳答案

  1. 由于 IntentSerivice 扩展了 Service,因此没有什么可以阻止您调用 startForeground()。不过,您必须显示实际的通知(曾经有一个黑客在没有通知的情况下启用了前台服务,但幸运的是它在 4.3 中得到了修复)。

  2. IntentService 的默认行为是 START_NOT_STICKY。您可以调用 setIntentRedelivery(true) 进行更改在你的构造函数或其他地方。

  3. ReentrantReadWrite 是 java 级别的锁,而不是文件/数据库/操作系统级别的锁。这意味着一旦进程死亡,锁就消失了。 (您确实说了“数据库锁”,但我认为这只是不准确的措辞 - 您没有以某种方式锁定数据库,是吗?)。

关于java - 后台任务的IntentService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com