【问题标题】:How to get access to values from every Activity using Service如何使用服务访问每个活动的值
【发布时间】:2017-07-07 09:36:19
【问题描述】:

我试图制作类似于 Nissan Leaf Spy 的应用。这个应用程序从蓝牙接口 ELM 327 接收数据。我的目标是收集如下数据:

  • 速度
  • 温度
  • 电源
  • 电池容量
  • 还有一些数据

并使用 GraphView 在实时图表上显示它们。 一个参数是 Activity 中的一个图表。因此,至少有与我需要显示的参数一样多的活动。我的猜测是使用

Android Services

在后台工作,通过蓝牙共同收集和保存不同阵列中的每个数据。当然,当我更改 Activity 以查看另一个 Activity 时,有效的 Activity 将停止工作,并且不再有实时时间。 问题是:是否有任何类型的“超类”始终有效,或者我是否需要使用 SQL 保存这些数据?或者我应该只使用intent.putExtraString(key,value)getIntent().getStringExtra(key)。我将不胜感激您的帮助!

【问题讨论】:

    标签: java android android-activity bluetooth android-service


    【解决方案1】:

    对于不同的参数有不同的活动,你只需要一个活动。您可以拥有一个图形和不同的带有参数适配器的 ArrayList,然后使用其中一个来根据所选参数(例如来自 Spinner)提供图形。

    提供这些 ArrayList 也同样简单。您可以运行一个用于一般数据收集的服务,其中包含一个 AsyncTask,当应用程序处于活动状态而不是在后台时,它将为选定的参数保持动态。服务本身可以在某种足够大的缓冲区中收集数据以提供这些图表。

    请记住,AsyncTask 非常适合在不阻塞主线程的情况下更新 UI 组件。


    编辑:看,如果您有一个要显示数据或图形的活动(让我们考虑一些其他活动而不是主要活动),您可以在进入活动后立即运行 AsyncTask(您可以定义一个显示图表的默认参数)或当您从下拉列表中选择时,在您进行活动时为您提供实时数据

    我将 AsyncTask 用于实时提要的原因是,您可以拥有不同的 UI 视图并无缝集成而不会出现任何未来问题,并且它将 Service 模块化为服务 Activity 的功能,并在您关闭应用程序时结束。在后台运行的 Service 主要在应用启动或活动启动后运行时提供临时日志文件或作为 AsyncTask 的 InputStream 源。

    【讨论】:

    • 好的,所以你是说我可以只使用一个“主”活动,里面有不同的 ArrayList,即使我要更改活动,AsyncTask 也会完成这项工作,并且仍然会提供 ArrayList在“主要”活动中?
    • 谢谢!如果我能以任何方式帮助您,请告诉我。
    • 当然!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多