【问题标题】:Android - Reduce Code in OnCreate to avoid Black ScreenAndroid - 减少 OnCreate 中的代码以避免黑屏
【发布时间】:2013-11-06 23:13:35
【问题描述】:

我有一个活动。我们将其称为活动 A。单击此活动中的按钮将数据发送到服务器(POST 方法)并启动活动 B。

由于在从 Activity A 向服务器发送数据之前需要进行一些计算,因此我将向服务器发送数据的任务作为异步任务实现。

在活动 B 中,在 OnCreate 方法中有一个 GET 请求被触发。因此,当 Activity B 启动时,这个 GET 请求就会被触发。从服务器获取数据后,我将数据加载到列表视图中。所有这些都在 OnCreate 方法中。同样,我已将此 GET 请求实现为异步任务。

另外,Activity A 中的 POST 方法和 Activity B 中的 GET 方法是相互关联的。

我面临的问题是,当我单击活动 A 中的按钮时,屏幕变黑并在 10 秒后出现(活动 B)。我在 Activity B 中实现了一个进度条,并让它出现,直到我得到服务器的响应。但这根本不会出现。我得到的只是列表视图突然被填充。

想知道为什么这显示为任务是 Activity A 和 B 中的异步任务

Activity B

   onCreate method
{

    display progress bar

    asynctask to fetch data

    while(data not fetched){

      // loop through until you get data            

    }

    populate list view  

}

谁能告诉我哪里出错了。这是 oncreate 方法中需要的最少代码。此外,由于这是一次性活动,我不想将其作为服务实现。另外,我不希望使用启动画面。我想要的只是显示进度条,直到我从服务器获取数据。从活动 A 转到活动 B 时,请帮助避免出现此黑屏。

谢谢

【问题讨论】:

  • while(未获取数据){ ?真的吗 ?如果你只是站在那里等待它完成,那么 asynctask 的意义何在?
  • 如果数据不可用,列表视图将不会被填充。因此我需要等到列表视图被填充。任何建议如何避免这种情况。谢谢
  • 这就是 onPostExecute 的用途。用于在任务完成后执行的东西
  • 谢谢。我将执行此操作并让您知道结果。
  • 这行得通。非常感谢 njzk2

标签: android android-activity


【解决方案1】:

谁能告诉我哪里出错了。

while(data not fetched){} 位很可能是您遇到问题的根源。

onCreate() 中启动任务很好。但是,不要阻止处理 onCreate() 的其余部分。删除while 循环,并在您的任务的onPostExecute() 句柄中处理数据准备就绪时更新UI。

【讨论】:

  • 谢谢。只是一个肯定。我是否需要剪切代码 while(data not fetched){ // 循环直到获得数据 } 填充列表视图并将其粘贴到 onPostExecute() 方法中。让我知道。谢谢
  • @TimothyRajan:由于您提供的只是伪代码,我无法真正回答。我再重复一遍:不要阻止处理 onCreate() 的其余部分
  • 感谢您的共享软件。我将执行此操作并让您知道结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 2011-04-06
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多