我的 android 应用程序的第一个活动,“启动器活动”,很快就完成了。它的目标是重定向到 MainActivity 或 UserLoginActivity,具体取决于共享首选项变量的值。
如果这个变量不存在,它会自动执行一个 StartActivity 到 MainActivity。如果设置了这个变量,那么它将向我的 API 执行一个 HTTP 请求,以便对用户进行身份验证。然后它将启动 MainActivity。HTTP 请求通常需要不到一秒的时间。
问题是我想在 LauncherActivity 的中心显示一个进度条,以便用户可以了解正在加载的内容。问题是屏幕上没有显示任何内容。但是如果我注释启动活动的行,那么它将被显示......似乎活动持续时间太快而无法显示任何内容!
我认为调用 setContentView() 方法会立即在屏幕上加载视图。我的情况是正常行为吗?知道活动将持续大约一秒钟,我怎么能在屏幕上显示进度条?
在这里你可以看到我的启动器活动
public class Launcher extends Activity {
private void goToUserLogin(){
Intent intent;
intent = new Intent(this, UserLoginActivity.class);
startActivity(intent);
finish();
}
private void goToMain(){
YokiAPI API = new YokiAPI(this);
Intent intent;
try {
if (API.authenticateSmart(YokiGlobals.preferences.getSavedUserId(this))) {
intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
} else {
this.goToUserLogin();
}
} catch (Exception e){}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_launcher);
// Launch Demo if First Run
if (YokiGlobals.preferences.getFirstLaunch(this)){
YokiGlobals.preferences.updateFirstLaunch(false, this);
this.launchDemo();
}
/*
** If userId saved, smart Auth and go to Main
** Else go to User Login for Full Auth or register
*/
if (YokiGlobals.preferences.getSavedUserId(this) == null){
this.goToUserLogin();
}
else {
this.goToMain();
}
}
}
和 .xml 资源文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="THIS TEXT WONT APPEAR"
android:layout_marginTop="208dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
谢谢,奥斯卡