如何通过服务定期从手机传感器请求数据并将其加载到activity(Android)

如何通过服务定期从手机传感器请求数据并将其加载到activity(Android),android,sqlite,android-intent,service,Android,Sqlite,Android Intent,Service,我脑子里有一个想法,我对如何实施有点困惑 我想为练习一些“跑步应用程序”: 基本上是一张地图,当你开始跑步时,它会得到你的位置,然后每隔X秒(假设X=2)从这个位置绘制多边形,计算从每个多边形到终点的距离,并生成一些其他细节(这不是问题所在) 问题1:我如何让服务在每次运行时都在本地保存一些数据?例如,我运行60秒,得到30个Latlng对象,然后循环遍历它们,然后生成运行细节。服务运行时,在哪里可以保存Latlng对象? 我考虑使用SQLite创建一个本地DB,然后通过brodacast接收器

我脑子里有一个想法,我对如何实施有点困惑

我想为练习一些“跑步应用程序”: 基本上是一张地图,当你开始跑步时,它会得到你的位置,然后每隔X秒(假设X=2)从这个位置绘制多边形,计算从每个多边形到终点的距离,并生成一些其他细节(这不是问题所在)

问题1:我如何让服务在每次运行时都在本地保存一些数据?例如,我运行60秒,得到30个Latlng对象,然后循环遍历它们,然后生成运行细节。服务运行时,在哪里可以保存Latlng对象? 我考虑使用SQLite创建一个本地DB,然后通过brodacast接收器创建一个intent服务,获取位置和当前时间,将其保存到本地DB,并提供详细信息,然后停止。(我如何知道本地数据库上有多少Latlngs?我需要创建一些变量来标识它,如何在每次调用intent服务时生成它?) 你还有什么其他的建议可以推荐我去做这件事并储存板条吗? 当我按下“停止运行”按钮时,我将从数据库中查找latlng,然后将其删除

问题2: 如果我正在使用intent服务获取当前位置的Latlng对象,除了将其保存到本地DB的操作外,如何在地图上同时绘制多边形?(我知道Intent服务无法直接与UI通信。我在这里有点困惑)


我认为我实施和创建这个“模型”的想法实际上是一个糟糕的做法。如果你有什么想法或地方可以参考我,我将不胜感激。谢谢

您可以随时查询数据库,数据库中有多少记录。如果您询问如何查询数据库,请参考。此外,为了从IntentService与UI进行通信,如果我创建了一个“正在运行”的实例,这是保存它的唯一可能的方法吗?我想知道是否还有其他办法。我在想这个原因,以后我会删除它。或者,如果运行已完成,则可以将其在线上传到某些BaaS服务。我的意思是,在我将runnign保存到本地数据库之后,我无论如何都希望将其上载到服务器并从本地数据库中删除它。@VijayAs只要应用程序正在运行,您就可以始终将数据保留在内存中。但我认为这里的情况并非如此。还有其他方法可以将数据共享引用保存在文件中,但根据我的说法,最好使用Sqlite数据库。这对你来说也更容易处理。我再次编辑了答案。感谢you@VijayYou还可以将数据保存在XML文件中,这将有助于解析存储在应用程序/数据中的数据。你可以用xml标记保存数据,不管你喜欢什么结构(例如,时间和时间)