Java 用于后台任务的IntentService
我计划使用IntentService进行一些处理。服务从清单中注册的广播接收器启动。服务必须更新一个数据库,这样操作可能会很长(甚至一分钟)。对于cpu,我可以使用wakelock,但是关于操作系统呢Java 用于后台任务的IntentService,java,android,intentservice,Java,Android,Intentservice,我计划使用IntentService进行一些处理。服务从清单中注册的广播接收器启动。服务必须更新一个数据库,这样操作可能会很长(甚至一分钟)。对于cpu,我可以使用wakelock,但是关于操作系统呢 可以在intentservice上调用startForeground吗 在终止后是否再次创建intentservice?默认行为是什么?开始粘粘的 服务获取一个db锁(ReentrantReadWrite java锁)以避免并发访问,如果服务被终止,锁会被释放吗?如果没有,我能做什么 由于inte
intentservice
扩展了服务
没有任何东西可以阻止您调用startForeground()
。不过,您必须显示一个实际的通知(以前有一个黑客在没有通知的情况下启用前台服务,但幸运的是它在4.3中得到了修复)IntentService
的默认行为是START\u NOT\u STICKY
。您可以通过调用构造函数或其他地方来更改它ReentrantReadWrite
是java级别的锁,而不是文件/db/OS级别的锁。这意味着一旦进程死了,锁就不存在了。(你确实说了‘一个数据库锁’,但我认为这只是不准确的措辞——你没有以某种方式锁定数据库,是吗?)不,db lock表示只在db类中获取写锁:)