我有两个活动:LauncherActivity和MainActivity。 MainActivity包含一个地图片段,导航栏和带有UI的ConstraintLayout。 LauncherActivity的目的是为用户提供登录可能性,然后提供app init(下载UserInfo,FusedLocationAPI初始化以在映射打开和一些misc操作之前获取用户位置)。 App init在单独的线程中执行,并在完成时调用主线程(通过Handler)。虽然它执行LauncherActivity会显示ProgressBar。完成所有工作后,将调用此代码:
startActivity(new Intent(LauncherActivity.this, MainActivity.class));
finish();
结果是当活动开始时,ProgressBar会冻结第二个,然后Activity会显示滞后动画。
我该如何解决这个问题?
修改1 我做了一些测试。我的代码是这样的:
mLoadingTextView.setText("Loading...");
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
handler.removeCallbacks(this);
mLoadingTextView.setText("Done!");
mLoadingProgressBar.setVisibility(View.GONE);
startActivity(new Intent(LauncherActivity.this, MainActivity.class));
finish();
}
}, 5000);
我得到的结果:延迟5秒后TextView的文字改为"完成!"并且仅在打开一些第二或第二个MainActivity之后。这个问题是由使用地图片段膨胀布局引起的吗?如果是这样,我该如何解决这个问题?