如何使用服务访问每个 Activity 的值

How to get access to values from every Activity using Service

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

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

Android Services

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

关于针对不同的参数进行不同的活动,您只需要一个 activity。您可以拥有一个图形和带有参数适配器的不同 ArrayLists,然后使用其中之一根据参数 select 说,从 Spinner 提供图形。

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

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


编辑:看,如果你有一个activity(让我们考虑一些其他的activity而不是主要的)你要显示数据或图表,你可以有AsyncTask 运行 一旦您输入 activity(您可以为要显示的图表定义默认参数)或当您从下拉菜单 select 时,为您提供实时数据 当你在 activity 时。

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