Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于后台任务的IntentService_Java_Android_Intentservice - Fatal编程技术网

Java 用于后台任务的IntentService

Java 用于后台任务的IntentService,java,android,intentservice,Java,Android,Intentservice,我计划使用IntentService进行一些处理。服务从清单中注册的广播接收器启动。服务必须更新一个数据库,这样操作可能会很长(甚至一分钟)。对于cpu,我可以使用wakelock,但是关于操作系统呢 可以在intentservice上调用startForeground吗 在终止后是否再次创建intentservice?默认行为是什么?开始粘粘的 服务获取一个db锁(ReentrantReadWrite java锁)以避免并发访问,如果服务被终止,锁会被释放吗?如果没有,我能做什么 由于inte

我计划使用IntentService进行一些处理。服务从清单中注册的广播接收器启动。服务必须更新一个数据库,这样操作可能会很长(甚至一分钟)。对于cpu,我可以使用wakelock,但是关于操作系统呢

  • 可以在intentservice上调用startForeground吗
  • 在终止后是否再次创建intentservice?默认行为是什么?开始粘粘的
  • 服务获取一个db锁(ReentrantReadWrite java锁)以避免并发访问,如果服务被终止,锁会被释放吗?如果没有,我能做什么
  • 由于
    intentservice
    扩展了
    服务
    没有任何东西可以阻止您调用
    startForeground()
    。不过,您必须显示一个实际的通知(以前有一个黑客在没有通知的情况下启用前台服务,但幸运的是它在4.3中得到了修复)

  • IntentService
    的默认行为是
    START\u NOT\u STICKY
    。您可以通过调用构造函数或其他地方来更改它

  • ReentrantReadWrite
    是java级别的锁,而不是文件/db/OS级别的锁。这意味着一旦进程死了,锁就不存在了。(你确实说了‘一个数据库锁’,但我认为这只是不准确的措辞——你没有以某种方式锁定数据库,是吗?)

  • 不,db lock表示只在db类中获取写锁:)