首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android:如何确保我的应用程序在后台运行时不会被暂停

android:如何确保我的应用程序在后台运行时不会被暂停
EN

Stack Overflow用户
提问于 2016-04-17 07:43:15
回答 1查看 1.7K关注 0票数 2

我正在开发的Android应用程序是由使用蓝牙的信标(设备)读取的。当应用程序处于前台时,它工作得很好(测试了20分钟)。然而,在应用程序进入后台几分钟后,它就停止了阅读。

我注意到,当app转到后台时,on暂停()方法将被执行;我的应用程序仍然读取几分钟,然后停止读取任何内容(当我手动将应用程序带到前台时,oncreate方法将被执行,app将继续正常运行)。

为什么我的应用在进入后台几分钟后就停止了阅读。我的应用程序是一个活动而不是服务。

  1. 应该将活动转换为服务或
  2. 我应该创建意图服务还是
  3. 我应该创建前瞻吗?

我不明白上述3种服务之间的区别,以及它们是否对我有帮助。

虽然稍微老一些的线程,但我回顾了防止应用程序被操作系统停止或暂停我们如何才能防止服务被操作系统杀死?我的应用程序在后台运行时被android系统杀死

但我迷路了。对任何讨论都表示感谢。

编辑

正如我从@davidgyoung的回答中了解到的,我必须写一个服务。我假设我的应用程序的GUI部分进入了mainactivity,然后我如何确保我的mainactivity在内存中仍然是活动的,并且在服务试图广播/通知GUI时没有被Android杀死。

/EDIT

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 14:58:34

是一种不被设计为在后台运行很长时间的活动。操作系统将销毁那些由于其他功能需要内存而不可见的活动。虽然a Service是适当的替代,但是即使是服务也会在内存压力下被操作系统破坏,所以如果服务被OS杀死,并且您仍然希望进行信标扫描,则仍然需要重新启动该服务。

所有这些问题都是在我们构建Android灯塔图书馆时出现的,我们确定了这些解决方案来继续进行扫描:

  • 使用服务扫描背景中的信标。它不必是IntentService,但这是一个合理的选择。
  • 使用AlarmManager在未来5分钟内重新启动扫描服务,以防它被杀死。(这种延迟允许操作系统从临时需要额外内存的情况下恢复。)如果扫描服务仍在运行,只需重新安排警报。
  • 注册OS级事件(引导、电源连接/断开),以便在稍后的时间重新启动扫描服务,如果用户用任务开关杀死应用程序的话。

所有这些都是为您创建的,如果您决定使用Android灯塔图书馆(我们也欢迎您的贡献!)如果您想要滚动您自己的,您可能想要看一下源代码看看这些东西是如何构建的。请随意复制和修改,也。这就是开源的美妙之处!

完全公开:我是开源项目的主要开发人员。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36673927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档