更新 UI 时处理此后台进程的最佳方法是什么?
What is the best way to handle this background process while updating UI?
我的应用程序每 2 周会在后台更新一次公交路线列表 API,并将该列表存储在 sharedpreferences 中。当用户第一次启动应用程序时,应用程序将在后台启动一项服务,该服务将下载 XML 数据、解析它并将路由作为 ArrayList 存储在 sharedpreferences 文件中。
启动器 activity 是一个地图,但是如果在第一次启动应用程序时,用户导航到 "list of all bus routes" activity,那么屏幕将是空白的而 XML 正在被解析。如果他们的数据连接速度较慢,那么它将在一段时间内保持空白。在显示 UI 中的列表之前,我正在考虑在服务完成时显示旋转加载程序,但我不确定如何将旋转加载程序同步到后台服务。任何有关如何解决此问题的建议将不胜感激。
谢谢。
我会使用广播意图进行通信。您可以在 UI 中设置默认隐藏的 ProgressBar
,但如果数据尚不存在,则显示它。您在公交路线列表 activity 中注册了一个 BroadcaseReceiever(并在适当的地方取消注册),您的服务可以在完成后发送广播意图。如果没有注册接收它,它就不会被处理。但是,如果您描述的情况发生,您会收到通知,数据现已准备就绪。隐藏微调器,显示数据。
我的应用程序每 2 周会在后台更新一次公交路线列表 API,并将该列表存储在 sharedpreferences 中。当用户第一次启动应用程序时,应用程序将在后台启动一项服务,该服务将下载 XML 数据、解析它并将路由作为 ArrayList 存储在 sharedpreferences 文件中。
启动器 activity 是一个地图,但是如果在第一次启动应用程序时,用户导航到 "list of all bus routes" activity,那么屏幕将是空白的而 XML 正在被解析。如果他们的数据连接速度较慢,那么它将在一段时间内保持空白。在显示 UI 中的列表之前,我正在考虑在服务完成时显示旋转加载程序,但我不确定如何将旋转加载程序同步到后台服务。任何有关如何解决此问题的建议将不胜感激。
谢谢。
我会使用广播意图进行通信。您可以在 UI 中设置默认隐藏的 ProgressBar
,但如果数据尚不存在,则显示它。您在公交路线列表 activity 中注册了一个 BroadcaseReceiever(并在适当的地方取消注册),您的服务可以在完成后发送广播意图。如果没有注册接收它,它就不会被处理。但是,如果您描述的情况发生,您会收到通知,数据现已准备就绪。隐藏微调器,显示数据。