【问题标题】:How to keep my android app alive in background for 24/7 continuous sensor data collection如何让我的 android 应用程序在后台保持活动状态以进行 24/7 连续传感器数据收集
【发布时间】:2019-06-05 02:00:26
【问题描述】:

我已经构建了一个用于收集移动和可穿戴传感器数据的安卓应用。我希望这个应用程序在后台 24/7 运行而不会被操作系统杀死。我知道 24/7 全天候运行它的所有利弊,但这是我的主要业务需求。

编辑:我已将其作为前台服务,只要我继续与手机交互,它就可以工作,但如果我让它闲置 4-5 小时,操作系统会杀死它,尽管它被列为前台服务

【问题讨论】:

  • 唯一的办法就是使用前台服务
  • @Gauranga,你有想过吗?我在这里遇到了同样的问题。我希望该应用程序在几天内保持活跃,以便从蓝牙连接的可穿戴设备收集数据。我还找到了前台服务解决方案,但是像你一样,应用程序在几个小时不活动时会被杀死(例如,当我睡觉时)
  • 2年3个月后,我仍然有同样的问题。我能得到的最好的方法是使用定期(每隔几分钟)调用一个 BroadcastReceived 的 AlarmManager,后者又调用一个前台服务,并使用 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 来避免备用存储桶。在服务中,我收集 GPS 数据和光传感器数据。该应用程序在后台运行了 5 天零 5 小时,没有用户交互,但随后它被神秘地杀死了。我已经尝试了下面提出的所有解决方案,但无济于事。

标签: android android-intent


【解决方案1】:

将应用程序设为启动器并将其设置为默认启动器。您可以按照本指南here。这个想法是启动器在手机启动时由操作系统启动,并且在系统内存不足时永远不会被杀死。

【讨论】:

    【解决方案2】:

    在 android marshmallow 之后运行后台服务令人头疼。
    每个后台操作都由Doze and StandBy Modes 暂停。 即使您使用作业调度程序或 WorkManger,运行操作的最小间隔为 15 分钟,即使您将最小间隔设置为小于 15 分钟。
    因此,您需要启动带有粘性通知的前台服务才能工作。您可以查看此article 以开始使用前台服务。 如果您的应用程序将在 Android Pie 上运行,请不要忘记将此预设放入清单文件中

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    

    您可以使用广播接收器在手机重启时重新运行服务 哪个听这个动作

    <action android:name="android.intent.action.BOOT_COMPLETED" />
    

    你也可以通过听这个动作来阻止它

     <action android:name="android.intent.action.ACTION_SHUTDOWN" />
    

    【讨论】:

    • 我已将其作为前台服务,只要我继续与手机交互,它就可以工作,但如果我让它闲置 4-5 小时,操作系统会杀死它,尽管它被列为前台服务
    • 你的手机类型和操作系统是什么@Gauranga
    • 我使用的是小米红米4a和安卓版本7.12.N2G47H。
    • 好的,发生这种情况的原因有很多正在运行看看这个stackoverflow.com/questions/6645193/…@Gauranga
    【解决方案3】:

    使用Service 收集数据 你可以在前台运行它,它不会被操作系统杀死

    【讨论】:

    • Foreground 前台服务执行一些用户可以注意到的操作。例如,音频应用程序将使用前台服务来播放音轨。前台服务必须显示通知。即使用户没有与应用交互,前台服务也会继续运行。
    • 我已将其作为前台服务,只要我继续与手机交互,它就可以工作,但如果我让它闲置 4-5 小时,操作系统会杀死它,尽管它被列为前台服务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2016-03-15
    • 2017-08-07
    相关资源
    最近更新 更多