【问题标题】:One service per sensor in Android?Android中每个传感器一项服务?
【发布时间】:2019-01-29 18:11:01
【问题描述】:

我正在实现一个 Android 7 应用程序,用于从智能手机收集传感器数据(如加速度、陀螺仪等)。目前我有一个后台服务,它收集所有传感器数据(对每种传感器类型使用registerListeneronSensorChanged)并将它们存储在 SQLite 数据库中(每个传感器一个表)。

这是正确的方法还是应该为每个传感器创建一项服务?尤其是当我为每个传感器设置 50 Hz 的采样率时,我不知道一项服务是否足够。

【问题讨论】:

    标签: android android-sqlite android-service


    【解决方案1】:

    这是正确的做法吗

    关于服务的数量,是的。你可能还有其他问题,比如not having background access to sensors on Android 9.0+

    我应该为每个传感器创建一个服务吗?

    没有。

    特别是当我为每个传感器设置 50 Hz 的采样率时,我不知道一项服务是否足够。

    拥有更多服务不会影响您处理 50Hz 采样率的能力。这是一个合适的线程模型的问题,以便对这些样本的任何重要工作都在后台线程(或来自小型线程池的线程)上执行。

    【讨论】:

    • 顺便说一下,如果我想转储一个输入事件文件 (/dev/input/),我可以只在上面提到的同一后台服务中创建一个线程,还是应该创建一个额外的为此提供服务?
    • 在 MainActivity 或后台服务中或在第二个单独的后台服务中启动的线程?
    • @machinery:您不需要其他服务。您无权访问/dev/inputAFAIK,因此详细信息可能取决于您对特定根框架的计划。
    • 我有一个根设备;)我认为在一个根设备上我应该可以访问/dev/input。还是不行?
    • @machinery:那么你需要看看你的根目录是如何工作的。如果您使用su 或其他东西手动分叉Process 运行事物,那么最近的逻辑组件(活动或现有服务)的线程应该可以工作。如果您正在使用一些现有的包装库,当它派生一个根进程时为您处理线程,那么您将不需要自己的线程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多