当我开始我的活动时,我注意到一个短暂的延迟。我点击我的应用程序图标,主屏幕在屏幕上停留约1-1.5秒,然后显示我的活动。
我的活动onCreate方法需要大约800毫秒才能完成。
我还注意到,即使我使用空布局的测试活动,设置android:screenOrientation="landscape"
也会增加明显的延迟。
有没有办法摆脱这种延迟,或者在UI加载时至少显示黑屏?
已编辑:请参阅下面的测试活动代码。在我的实际活动中,有许多其他加载包括GUI元素和引擎逻辑,声音等。真正的问题是,即使使用这个小的测试活动,延迟也是可见的。
测试活动代码:
public class TestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set full screen mode and disable
// the keyguard (lockscreen)
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.main);
}
}
布局XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true" >
</FrameLayout>
清单:
<activity
android:name=".TestActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:2)
您可以将默认活动设置为近乎空白的活动,该活动只会显示背景并启动您的实际活动..就像启动画面
答案 1 :(得分:0)
答案 2 :(得分:0)
Ans Drake给出的是完美的,但要扩展它 - 让你想让你的自定义闪屏图像一直可见,如果我们将颜色应用到窗口,那么将会有从颜色切换到实际的斜杠屏幕。这可能是一个糟糕的用户体验。我建议的ans不需要setContentView,只能通过主题管理启动画面。
我们无法在java中设置主题,就像在我的情况下控件来到我的启动活动的创建很晚。直到那个时候黑屏保持可见。
这让我觉得窗口必须从我们在清单中指定的主题进行管理。
我有这样的宣言:
<activity
android:name=".main.activities.SplashScreen"
android:theme="@style/Splash"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
现在我创建的主题如下:
<style name="Splash" parent="@style/Theme.AppCompat.Light">
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowNoTitle">true</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimaryDark">@color/green_09</item>
<item name="colorPrimary">@color/green_09</item>
<item name="windowActionBar">false</item>
</style>
在包含位图资源的可绘制资源中进行初始化,我必须调整一下以使其看起来完美而不是拉伸并位于中心:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:antialias="true"
android:dither="true"
android:gravity="fill"
android:src="@drawable/splash_screen" />