2011-12-19 37 views
0

如何在我的应用程序启动后立即开始为我的活动加载数据?目前,我已经设置好在主屏幕启动后立即下载所需的信息 - 这是用户必须登录的地方。根据连接速度和用户登录的速度,数据可能不会被加载,并且在活动启动时会导致问题,因为数据尚未加载。 (spinner将不会有任何数据等)在应用程序启动后尽快为活动加载数据

我目前有两个AsyncTask - 一个用于登录,一个用于下载数据。一旦用户离开屏幕,看起来好像AsyncTask停止。我试着把计时器等到boolean变量设置为true从下载数据的任务,但似乎强制关闭应用程序。这里有一个例子:

while (!settingsLoaded) { 
    SystemClock.sleep(1000); 
} 

当该下载数据的AsyncTask打onPostExecute,我设置settingsLoaded = true。我应该使用其他方式下载数据吗?

注意 - 当应用程序启动时,我的应用程序数据AsyncTasktask.execute();,并记录在用户的其他AsyncTask是掀起依赖每当用户点击“登录”按钮。

回答

0

现在,你不提是正装什么样的数据 - 但是从你的方案的描述,我建议你在的区域做一些事情:

  1. 用户启动应用程序
  2. 的显示登录屏幕
  3. 用户输入名称/密码并点击“登录”
  4. AsyncTask处理登录被触发 - 同时显示一个ProgressDialog
  5. 登录任务完成 - 主活动启动。
  6. 的数据加载的AsyncTask烧制 - 甲ProgressDialog示出在数据被加载
  7. 数据装饰面,ProgressDialog dissappears并且用户可以开始使用该应用。

什么最有可能发生在你的情况是,登录任务的数据加载任务之前完成。您目前的做法无法说明首先完成哪项任务。

如果你想开始加载数据的时候了,你能做到这一点使用Service并具有主要活动表现出ProgressDialog启动时,如果Service没有完成加载呢。

-1

在下载完成的异步任务之前,您不应该启动需要不可用下载数据的活动。为了更好的用户体验,您应该在进程对话框中显示某种启动画面(下载...)以让用户了解未完成的后台进程。

+0

如果可能的话,我希望数据(用于spinners)在后台加载。我试图让用户更容易,更快捷,并在需要之前预先加载信息。我已经有了多个其他地方,用户必须等待,并有一个“下载..”对话框。 – Cody 2011-12-19 15:17:51

相关问题