我正在开发的Android应用程序是由使用蓝牙的信标(设备)读取的。当应用程序处于前台时,它工作得很好(测试了20分钟)。然而,在应用程序进入后台几分钟后,它就停止了阅读。
我注意到,当app转到后台时,on暂停()方法将被执行;我的应用程序仍然读取几分钟,然后停止读取任何内容(当我手动将应用程序带到前台时,oncreate方法将被执行,app将继续正常运行)。
为什么我的应用在进入后台几分钟后就停止了阅读。我的应用程序是一个活动而不是服务。
我不明白上述3种服务之间的区别,以及它们是否对我有帮助。
虽然稍微老一些的线程,但我回顾了防止应用程序被操作系统停止或暂停、我们如何才能防止服务被操作系统杀死?和我的应用程序在后台运行时被android系统杀死
但我迷路了。对任何讨论都表示感谢。
编辑
正如我从@davidgyoung的回答中了解到的,我必须写一个服务。我假设我的应用程序的GUI部分进入了mainactivity,然后我如何确保我的mainactivity在内存中仍然是活动的,并且在服务试图广播/通知GUI时没有被Android杀死。
/EDIT
发布于 2016-04-17 14:58:34
是一种不被设计为在后台运行很长时间的活动。操作系统将销毁那些由于其他功能需要内存而不可见的活动。虽然a Service是适当的替代,但是即使是服务也会在内存压力下被操作系统破坏,所以如果服务被OS杀死,并且您仍然希望进行信标扫描,则仍然需要重新启动该服务。
所有这些问题都是在我们构建Android灯塔图书馆时出现的,我们确定了这些解决方案来继续进行扫描:
AlarmManager
在未来5分钟内重新启动扫描服务,以防它被杀死。(这种延迟允许操作系统从临时需要额外内存的情况下恢复。)如果扫描服务仍在运行,只需重新安排警报。所有这些都是为您创建的,如果您决定使用Android灯塔图书馆(我们也欢迎您的贡献!)如果您想要滚动您自己的,您可能想要看一下源代码看看这些东西是如何构建的。请随意复制和修改,也。这就是开源的美妙之处!
完全公开:我是开源项目的主要开发人员。
https://stackoverflow.com/questions/36673927
复制相似问题