我在后台服务(Intent服务)期间出错。这是logcat的一部分:
02-07 17:42:09.401:E / dalvikvm(27243):致命的旋转暂停,倾销线程
02-07 17:42:09.421:E / dalvikvm(27243):threadid = 15:卡在线程= 17,放弃
02-07 17:42:09.421:A / libc(27243):致命信号16(SIGSTKFLT)位于0x00006a6b(代码= -6),线程28821(IntentService [S]
在服务中,我调用asyncTask来执行一些后台工作(换句话说,不使用asyncTask,应用程序抛出异常),例如将重型视频分成1M部分。
这种情况很奇怪,因为索尼Xperia Z1只有这个问题。我已经在Nexus7,GalaxyTab2中测试过没有问题。
有什么想法吗?
提前感谢您的时间!
此致 rmuhamed。
答案 0 :(得分:0)
我自己解决了。我不知道它是否是最佳解决方案,但现在工作正常。
显然问题是操作系统正在销毁服务,因为根据IntentServices *的优先级类别,它的优先级较低。
我必须在IntenteService类中的 onTaskRemoved 和 onDestroy 方法中添加一些自定义逻辑。一方面,在这些方法中,我添加了一个标志来控制服务是否被销毁并调用AsyncTask.stop()(强制asynctask完成)。另一方面,在我的asynctask中,我必须验证此标志以防止在先前停止服务时执行逻辑。
我认为有些代码很有用。告诉我,如果你需要它。
我希望这很有帮助。