当我的应用在AsyncTask
中加载数据时,它会显示一个初始屏幕。有时此数据加载需要不到一秒钟的时间,有时需要更长的时间。但是,如果数据加载首先完成,我想确保启动至少 2 秒,否则等到数据完成。
我的第一个解决方案是使用一个Countdown Timer
和两个布尔值。当进程开始时,它们的布尔值将设置为 true。当该过程完成后,它会将其设置为布尔值 false。然后它会检查对方的布尔值是否为假,以及是否忽略了飞溅。
虽然这有效,但我觉得它过于复杂,并希望找到更有效或更好的解决方案。
我想确保飞溅至少持续 2 秒,如果 数据加载首先完成,否则等到数据 做。
您可以异步启动用于加载数据的 Thread(Splash) 和 AsyncTask,并在 AsyncTask onPostExecute()
调用新的活动。
你能不用System.getCurrentTime();
来实现这一点吗?
在 AsyncTask 开始时,调用该方法并存储结果。然后,当任务完成时,再次调用该方法并计算时间值的差异。如果它不大于 2000 毫秒,则有一个 while 循环,该循环不断请求系统时间并比较这些值,直到它等于或大于 2 毫秒。