【问题标题】:Android - Sony Xperia Z1 - Fatal spin-on-suspend, dumping threadsAndroid - Sony Xperia Z1 - 致命的旋转挂起,转储线程
【发布时间】:2014-02-10 12:45:03
【问题描述】:

我在后台服务(Intent 服务)期间出现错误。这是 logcat 的一部分:

02-07 17:42:09.401:E/dalvikvm(27243):致命的 spin-on-suspend,转储线程

02-07 17:42:09.421: E/dalvikvm(27243): threadid=15: 卡在 threadid=17,放弃

02-07 17:42:09.421:A/libc(27243):致命信号 16 (SIGSTKFLT) 位于 0x00006a6b (code=-6),线程 28821 (IntentService[S)

在服务内部,我调用 asyncTask 来做一些后台工作(以另一种方式,不使用 asyncTask,应用程序会引发异常),例如发送一个分成 1M 部分的重视频。

这种情况很奇怪,因为只有索尼 Xperia Z1 才有这个问题。我已经在 Nexus7、GalaxyTab2 中测试过,没有任何问题。

有什么想法吗?

提前感谢您的宝贵时间!

问候, rmuhamed。

【问题讨论】:

  • 我在 Sony Xperia Z 上的项目遇到了同样的问题,在 Nexus 等其他设备上运行良好...你解决了吗?
  • erwin,你好吗?我发布了一个对我有用的“答案”,你看到了吗?希望对您有所帮助

标签: android android-intent android-asynctask android-service


【解决方案1】:

我自己解决了。我不知道这是否是最好的解决方案,但现在工作正常。

显然问题在于操作系统正在销毁服务,因为根据 IntentServices* 的优先级类别,它的优先级较低。

我必须在我的 IntenteService 类中的 onTaskRemovedonDestroy 方法中添加一些自定义逻辑。一方面,在这些方法中,我添加了一个标志来控制服务是否被销毁并调用 AsyncTask.stop() (强制 asynctask 完成)。另一方面,在我的 asynctask 中,我必须验证此标志以防止在服务之前停止时执行逻辑。

我认为一些代码是 hepful。需要的话告诉我吧。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多