我正在开发一个简单的应用程序,在我做其他事情的同时在背景中播放白噪声。
当我切换到其他应用程序(如游戏,Chrome浏览器等)时效果非常好,但有时(例如,当打开许多镀铬标签时)白噪声声音停止,我需要重新加载我的应用程序。
我不使用服务,这是什么原因?
答案 0 :(得分:2)
我认为Services正是您所寻找的。 p>
服务是一个可以执行长时间运行的应用程序组件 在后台运行,它不提供用户 接口
答案 1 :(得分:2)
因为您的应用程序被系统杀死以放弃其他应用程序(游戏,Chrome等)的资源。因此,您需要使用服务。
以下是Processes and Application Life Cycle 的摘录,详细说明如下:
Android的一个不寻常的基本功能是应用程序 过程的生命周期不是由应用程序直接控制的 本身。相反,它由系统通过组合确定 系统知道正在运行的应用程序部分,如何运行 这些东西对用户来说很重要,总体内存是多少 在系统中可用。
...
- 缓存进程是当前不需要的进程,因此当其他地方需要内存时,系统可以根据需要自由地终止它。在一个 通常表现系统,这些是涉及的唯一过程 内存管理:运行良好的系统将有多个缓存 过程总是可用的(为了更有效地切换) 应用程序)并根据需要定期杀死最旧的应用程序。只有在 非常关键(和不受欢迎的)情况将由系统进入 所有缓存进程都被杀死的点,它必须开始查杀 服务流程。这些进程通常包含一个或多个Activity 当前对用户不可见的实例(onStop() 方法已被调用并返回)。只要他们实施他们的 活动生命周期正确(参见活动了解更多详情),何时 系统杀死这样的过程,它不会影响用户 返回该应用程序时的体验:它可以恢复以前的应用程序 在新的中重新创建关联的活动时保存的状态 过程
醇>
答案 2 :(得分:2)
为了更好地防止操作系统杀死你的应用,你应该使用
前台服务
遵循此处的官方指南:https://developer.android.com/guide/components/services.html#Foreground
请记住,没有办法确定操作系统永远不会杀死你的应用程序,因为当RAM变得非常低时,它可以根据他的优先级规则独立地从类型中杀死每个进程