Android 在显示“活动”窗口之前完成布局

Android 在显示“活动”窗口之前完成布局,android,off-screen,start-activity,Android,Off Screen,Start Activity,我有以下场景:在活动A中,当用户单击按钮时,应用程序向服务器发送请求以检索某些信息,然后将这些信息放入启动活动B的意图中 在活动B中,在onCreate方法中,我执行setContentView(R.layout.activity_B)(此布局非常复杂,因此即使从XML中扩展它也需要一段时间),然后执行一系列初始化。最后,在onStart中,我对组件进行了一些最终准备/安排 在活动A中,当用户按下按钮时,我启动一个AsyncTask,它从服务器获取信息并启动活动B,将所需信息传递到intent。

我有以下场景:在活动A中,当用户单击按钮时,应用程序向服务器发送请求以检索某些信息,然后将这些信息放入启动活动B的意图中

在活动B中,在
onCreate
方法中,我执行
setContentView(R.layout.activity_B)
(此布局非常复杂,因此即使从XML中扩展它也需要一段时间),然后执行一系列初始化。最后,在
onStart
中,我对组件进行了一些最终准备/安排

在活动A中,当用户按下按钮时,我启动一个
AsyncTask
,它从服务器获取信息并启动活动B,将所需信息传递到intent。当我调用“startActivity”时,活动B的窗口会立即滑入位置,但可能需要几秒钟才能完成初始化。在这几秒钟里,我看到一个黑屏。最后,执行
onStart
,一切都会继续


我想做的是在活动B滑入视图之前,在屏幕外完成所有初始化,,这样当它“到达”时,所有布局都已经存在。有什么办法可以做到这一点吗?

我想你做不到。活动本质上只有在屏幕上显示时才是“活的”

因此,我认为如果某个活动不在屏幕的前景中,就无法发出开始工作(即实例化视图)的信号


我想说,要获得更好的用户体验,最好的选择是使用某种进度指示器,显示用户正在加载的内容,然后在加载完成后隐藏

也许碎片能帮上忙?将活动A和B更改为片段A和B,并在后台加载片段B而不显示它。

好的,假设活动在前台,但我讨厌看到黑屏。有什么办法吗?是透明的还是什么的?任何东西问题是初始化需要一些时间,我希望这个过程是“用户友好的”,让您自己成为一个全屏图像,并将其作为xml中的fill\u parent/fill\u parent。将除图像之外的所有内容设置为不可见。setContentView()完成后,屏幕上应该只有此图像。初始化完所有其他视图后,将它们全部设置为可见,并将图像设置为不可见。这实际上是一个“启动屏幕”有意义的实例,因为您只有在做一些工作时才使用它,以提供更好的用户体验。Hi@Aleks G in AsyncTask在doinbackground中完成您的工作,这意味着您可以从服务器下载工作。然后在AsyncTask中有onpostexecute选项,在该方法中使用重定向。如果你这样做,你就不会得到黑屏。同样在活动B中,使用不带加载程序的异步任务绑定非ui数据。@Rajesh:这正是我正在做的-请仔细阅读我的问题。问题出在活动B中的
onCreate
方法中。在emulator中,完成大约需要5秒钟-只需膨胀布局、设置本地引用并进行主要初始化。仅对布局进行充气大约需要3秒钟。在这5秒钟里,我一直盯着黑屏看。@Aleks你正在下载活动A中的数据,对吗。然后,您将传递给活动B。您可以在活动B中使用异步任务,而不必这样做。在oncreate中,只需启动异步任务,其进度类似于下载详细信息。。。然后,在执行后,u可以绑定数据包,但遗憾的是,不能这样做,因为应用程序必须支持2.1以后的版本。CompatibilityLibrary将解决该问题: