Android 安卓:如何确保我的应用程序在后台运行时不会暂停
我正在开发的Android应用程序使用蓝牙从附近的信标(设备)读取数据。当应用程序位于前台时,它工作正常(测试了20分钟)。然而,在应用程序进入后台几分钟后,它就会停止阅读 我注意到当应用程序转到后台时,onpause()方法被执行;但我的应用程序读取了几分钟,然后就停止读取任何内容(当我手动将应用程序置于前台时,oncreate方法被执行,应用程序正常继续) 为什么我的应用程序在进入后台几分钟后停止阅读。我的应用是一项活动,而不是服务Android 安卓:如何确保我的应用程序在后台运行时不会暂停,android,bluetooth,ibeacon-android,Android,Bluetooth,Ibeacon Android,我正在开发的Android应用程序使用蓝牙从附近的信标(设备)读取数据。当应用程序位于前台时,它工作正常(测试了20分钟)。然而,在应用程序进入后台几分钟后,它就会停止阅读 我注意到当应用程序转到后台时,onpause()方法被执行;但我的应用程序读取了几分钟,然后就停止读取任何内容(当我手动将应用程序置于前台时,oncreate方法被执行,应用程序正常继续) 为什么我的应用程序在进入后台几分钟后停止阅读。我的应用是一项活动,而不是服务 应将活动转换为服务或 我应该创建intentservice
/EDIT活动的设计不是为了在后台长时间运行。Android操作系统将破坏不可见的活动,因为其他功能需要内存。虽然服务是合适的替代方案,但即使是服务也会在操作系统内存压力下被销毁,因此如果服务被操作系统杀死,并且您继续希望进行信标扫描,则仍然需要重新启动服务 所有这些问题都是在我们构建时出现的,我们确定了这些解决方案以继续扫描:
- 使用服务在后台扫描信标。它不必是IntentService,但这是一个合理的选择
- 使用
在未来5分钟内重新启动扫描服务,以防它被杀死。(此延迟允许操作系统从临时需要的额外内存中恢复。)如果扫描服务仍在运行,只需重新安排警报AlarmManager
- 注册操作系统级事件(启动、电源连接/断开),以便在用户使用任务切换器终止应用程序后重新启动扫描服务
充分披露:我是Android Beacon库开源项目的首席开发人员。我如何知道我的Beacon是否与ABL兼容。以下工具不检测我的信标Android信标库可以检测任何发布格式的信标。如果你能描述一下你的信标类型,我也许能给你一些提示。