我制作了一个具有很多布局的游戏,因此花费了将近15秒或更长时间来加载活动。有没有一种方法可以先加载一些布局,然后在一段时间后加载其余的布局,这样用户就不必在活动之间看到黑屏。
为此使用线程。在线程外加载一些布局,并在线程中加载其余线程。线程的示例代码。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//write your code here...
}
}, delay_time);
[如果有可能,请消除多少布局。如果要立即显示活动,则可以尝试对某些布局进行硬编码,并延迟将它们添加到其他线程中。
嗯,惰性初始化通常可以这样归档
private View v;
...
v.getSomethingUsefullFromView();
public int getSomethingUsefullFromView () {
if(v == null)
v = new View()
jadajada
return somevalue;
}
这里的诀窍是要有if(v == null) v = new View()
代码段
这样,只有在实际需要时才初始化View v。
懒惰加载布局的另一种不错的方法是使用布局中的ViewStub
条目,如https://developer.android.com/training/improving-layouts/loading-ondemand所述,>
基本上,您在布局中定义了一个ViewStub
条目,它引用了另一个布局文件,您在其中放置了要加载的内容。在将存根的可见性设置为VISIBLE
之前,不会加载这些内容。之后,存根本身就会消失,您可以使用已加载的子视图/布局。