我可以使用什么线程方法在Android中读取长文本文件?

时间:2017-03-09 20:18:34

标签: android multithreading performance android-asynctask

我必须创建一个应用程序,我必须显示一个地图(我正在使用Osmdroid)并读取一个包含地理坐标列表的文本文件。我必须阅读一对纬度和经度并在地图上显示它,并在一秒钟后阅读下一对并在地图上显示,依此类推。

我正在考虑在Thread中阅读该文件,但我发现我无法对Thread中的用户界面做任何事情,所以我想我无法在地图上显示位置。

然后我发现使用AsyncTask我可以修改用户界面,但在文档中说这是用于简短的任务,而我想做的事可能需要很长时间。

AsyncTask文档中说如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent包提供的各种API,例如Executor, ThreadPoolExecutor和FutureTask ,但我不知道何时使用这些类,如果其中一个(或任何其他)可以帮助我做我想要的:读取文本文件的一行并显示位置地图。

2 个答案:

答案 0 :(得分:0)

您可以使用AsyncTask类在后台加载数据并轻松更新UI 或者尝试使用Loaders,效率高于AsyncTask 阅读此链接并在youtube上搜索AsyncTask或Loaders

请参阅

中的此示例

StackOverFlow

阅读官方文档herehere

答案 1 :(得分:0)

如果从另一个线程(可能是AsyncTask)获取数据,那么您将负责通过各种活动或片段生命周期事件(例如{{1})管理线程和UI线程。和配置更改 使用Loaders