2017-01-29 58 views
-2

我正在开发一个简单的应用程序,只需在背景中播放白噪声,而我正在做其他事情。为什么我的应用程序停止工作?

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

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

回答

2

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

这里从Processes and Application Life Cycle 摘录更多细节说明:

的Android上非同寻常的基本特征就是应用 过程的生命周期不直接由应用程序本身 控制。相反,它由系统通过组合系统 确定系统知道正在运行,这些东西对用户如何重要以及系统中可用的整体内存有多少。

...

  • 缓存过程是当前不需要一个,所以该系统是免费时别处需要存储器根据需要将其杀死。在正常运行的系统中,这些是内存管理中涉及的唯一进程:运行良好的系统将始终有多个缓存的进程(用于在 应用程序之间进行更高效的切换),并根据需要定期清除最旧的进程。只有在 非常关键(并且不合需要)的情况下,系统才会到达所有缓存进程都被终止的点,并且它必须开始终止服务进程 。这些过程通常包含一个或多个活动 实例,该实例当前对用户不可见(onStop() 方法已被调用并返回)。如果他们正确地实施他们的 活动生命周期(请参阅活动以获取更多详细信息),当 系统杀死这些进程时,它不会影响用户返回该应用程序时的体验: 保存的状态可以在关联活动将在新的 过程中重新创建。
  • 2

    我认为Services是你在找什么。

    A服务是可以在后台执行长时间运行 操作的应用组件,并且它不向用户提供 接口。

    2

    为了获得更好的机会,防止OS杀死你的应用程序,你应该使用

    前台服务

    下,官方指导这里:https://developer.android.com/guide/components/services.html#Foreground

    记住没有办法确定操作系统永远不会杀死你的应用程序,因为当内存变得非常低时,它可能会永远杀死y从类型中独立处理,遵循他的优先规则

    相关问题