如何使用服务

时间:2017-07-07 09:36:19

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

我试图使应用程序类似于日产Leaf Spy。此应用程序从蓝牙接口ELM 327接收数据。我的目标是收集如下数据:

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

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

Android Services

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

1 个答案:

答案 0 :(得分:1)

关于为不同参数设置不同的活动,您只需要一个活动。您可以使用图形和不同的ArrayLists以及参数的适配器,然后使用其中一个来根据所选参数(来自Spinner)来提供图形。

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

请记住,AsyncTasks适用于更新UI组件而不会阻塞主线程。

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

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