为什么我的应用停止工作?

时间:2017-01-29 18:33:05

标签: android android-service

我正在开发一个简单的应用程序,在我做其他事情的同时在背景中播放白噪声。

当我切换到其他应用程序(如游戏,Chrome浏览器等)时效果非常好,但有时(例如,当打开许多镀铬标签时)白噪声声音停止,我需要重新加载我的应用程序。

我不使用服务,这是什么原因?

3 个答案:

答案 0 :(得分:2)

我认为Services正是您所寻找的。

  

服务是一个可以执行长时间运行的应用程序组件   在后台运行,它不提供用户   接口

答案 1 :(得分:2)

因为您的应用程序被系统杀死以放弃其他应用程序(游戏,Chrome等)的资源。因此,您需要使用服务

以下是Processes and Application Life Cycle 的摘录,详细说明如下:

  

Android的一个不寻常的基本功能是应用程序   过程的生命周期不是由应用程序直接控制的   本身。相反,它由系统通过组合确定   系统知道正在运行的应用程序部分,如何运行   这些东西对用户来说很重要,总体内存是多少   在系统中可用。

     

...

     
      
  1. 缓存进程是当前不需要的进程,因此当其他地方需要内存时,系统可以根据需要自由地终止它。在一个   通常表现系统,这些是涉及的唯一过程   内存管理:运行良好的系统将有多个缓存   过程总是可用的(为了更有效地切换)   应用程序)并根据需要定期杀死最旧的应用程序。只有在   非常关键(和不受欢迎的)情况将由系统进入   所有缓存进程都被杀死的点,它必须开始查杀   服务流程。这些进程通常包含一个或多个Activity   当前对用户不可见的实例(onStop()   方法已被调用并返回)。只要他们实施他们的   活动生命周期正确(参见活动了解更多详情),何时   系统杀死这样的过程,它不会影响用户   返回该应用程序时的体验:它可以恢复以前的应用程序   在新的中重新创建关联的活动时保存的状态   过程
  2.   

答案 2 :(得分:2)

为了更好地防止操作系统杀死你的应用,你应该使用

  

前台服务

遵循此处的官方指南:https://developer.android.com/guide/components/services.html#Foreground

请记住,没有办法确定操作系统永远不会杀死你的应用程序,因为当RAM变得非常低时,它可以根据他的优先级规则独立地从类型中杀死每个进程