【问题标题】:Service: onTaskRemoved or onDestroy very rarely being called on swiping app off on the recent apps list服务:onTaskRemoved 或 onDestroy 很少在最近的应用程序列表上滑动应用程序时被调用
【发布时间】:2017-08-30 14:42:50
【问题描述】:

服务:onTaskRemovedonDestroy 在最近的应用列表上滑动应用时很少被调用

在这种情况下,例如视频录制,我应该如何正确停止?我只是损坏(无法播放)的 mp4 文件

附言android:stopWithTask="false" 当然是设置的(无论如何它都是默认的)

【问题讨论】:

  • 我认为您应该将服务绑定到活动
  • @AhmedAbd-Elmeged 我的活动 pausestop 服务应该仍在工作(我不会在那些活动中杀死它)
  • 让这个服务在前台运行 - 检查Service API 以了解如何做到这一点
  • @pskink 与前台服务onTaskRemoved 将在滑动应用程序时一直被调用?
  • @pskink 我知道该怎么做,当我开始录制视频(我的应用程序的功能)时,我将我的服务置于前台......

标签: android


【解决方案1】:

我碰巧编写了一个专门用于测试这种行为的应用程序。我从来没有在我最近购买的 Android 6 设备上测试过它,所以我刚刚做了。主要活动在onCreate 中启动服务并在onBackPressed 中停止它。

在运行 6.0.1 的 LG-K450 (X Power) 上,onTaskRemoved 以 100% 的可靠性被调用。

如果服务在后台运行,则调用onTaskRemoved,但不调用onDestroy,并终止进程。如果onStartCommand 返回START_STICKY,则服务几乎立即重新启动。 (过去需要几秒钟。)否则,当我重新启动主要活动时,它会重新启动。

如果服务在前台运行,onTaskRemoved 仍会被调用,但服务没有终止。这是新的。在旧版本的 Android 上,前台服务将被终止并重新启动。

如果您没有看到对onTaskRemoved 的调用,我首先怀疑是设备特定的错误。让我猜猜……三星?

【讨论】:

  • 您确定要关闭特定应用吗?不只是按 X 按钮从您最近的应用程序列表中清除所有应用程序(X 按钮 onTaskRemoved 对我来说是正常的,但滑动特定应用程序不是)
  • @user924 onTaskRemoved 在任何一种情况下都会被调用——所有应用程序都被清除或只有我的测试应用程序。我注意到前台服务有一些新的东西;查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多