Java Android应用程序在屏幕锁定一段时间后被杀死

Java Android应用程序在屏幕锁定一段时间后被杀死,java,android,android-activity,memory-leaks,bluetooth,Java,Android,Android Activity,Memory Leaks,Bluetooth,我正在开发一个Android应用程序,其中包括从通过蓝牙连接的外部设备将字节数据记录到手机存储器中的文件中。我需要应用程序连续运行几天而不停止 我已经测试了几个小时,当屏幕打开时,录音效果很好。但当屏幕锁定超过几分钟时,在某些设备(如redmi手机)中,当我再次打开应用程序时,它会在停止应用程序后重新启动。这种情况发生在应用程序最小化几分钟时 我在互联网上搜索过,知道android系统在onPause上运行一段时间,为了节省内存,应用程序会被它杀死 我不确定这是否是背后的原因,但如果有任何其他原

我正在开发一个Android应用程序,其中包括从通过蓝牙连接的外部设备将字节数据记录到手机存储器中的文件中。我需要应用程序连续运行几天而不停止

我已经测试了几个小时,当屏幕打开时,录音效果很好。但当屏幕锁定超过几分钟时,在某些设备(如redmi手机)中,当我再次打开应用程序时,它会在停止应用程序后重新启动。这种情况发生在应用程序最小化几分钟时

我在互联网上搜索过,知道android系统在onPause上运行一段时间,为了节省内存,应用程序会被它杀死

我不确定这是否是背后的原因,但如果有任何其他原因,请让我知道

Android的工作原理如下:

  • 在外部设备和android应用程序之间建立蓝牙连接

  • 我正在使用NRF BLE_app_uart库来完成这件事

  • 通过蓝牙从外部设备接收数据(字节)

  • 这些数据字节被添加到静态arraylist,并使用外部可运行线程从arraylist读取值,然后使用Outputwriter方法写入/追加到外部文件中

  • 数据字节从外部线程同时绘制在图形中

  • 测试设备是Redmi Y2(Android O,8.1.0)

  • 问题是,当设备锁定超过几分钟时,它会被破坏并重新启动

    我怀疑原因是内存问题还是安卓系统造成的


    实际上,该应用程序预计将运行几天,我想知道各种健身应用程序在几天内是如何工作的。

    这是“打瞌睡”模式。请在@gabeschen上阅读,谢谢你的回复,我会阅读并让你知道know@GabeSechan,我阅读了文档,但为了解决瞌睡模式问题,我不能要求用户接受请求\忽略\电池\优化权限,因为这是不允许的Google play store,另一个可用的选项是使用FCM,但我不确定它是否适用于我的情况。请告诉我实现它的其他方法。谢谢你可以从play store请求,但它不会关闭电池优化-它允许你启动屏幕,用户可以选择关闭它。除此之外,我真的帮不了你什么,因为我不知道你在做什么,除了以某种方式使用蓝牙。但一般的规则是,除非你的服务是前台服务,否则你不能期望它们能持续很长时间,而且当屏幕关闭时,你不能期望任何东西每15分钟处理一次以上。