私のアプリには次のアクティビティがあります。
- ダッシュボード アクティビティ
- スプラッシュ アクティビティ
- 主な活動
必要なフローは次のとおりです。ダッシュ ボードには、MainActivity を起動するボタンがあります。メイン アクティビティの onCreate() メソッドは、ユーザー プロファイルが以前に作成されているかどうかをチェックし、作成されている場合は正常に開始します (これは高速で、GUI の遅延はありません)。ユーザー プロファイルが見つからない場合は、mainActivity の手順/ハウツーを含むスプラッシュ スクリーンを表示する必要があります。一方、メイン アクティビティの onCreate() は新しいユーザー プロファイル ファイルを作成します (低速で GUI のブロック)。
私が現在見ているのは、遅いユーザープロファイルの作成が終了した後、スプラッシュ/指示が遅れて表示されることです.
MainActivity のコード スニペットを次に示します。
private void showUsage(){
Thread splashTread = new Thread() {
public void run() {
try {
Intent instructionIntent = new Intent(MainActivity.this,
InstructionsActivity.class);
startActivity(instructionIntent);
} catch (Exception e) {
e.printStackTrace();
}
}
};
splashTread.start();
}
@Override //MainActivity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (!IsProfileExists()){
showUsage();
try{
createUserProfile(); //slow!
} catch (Exception e) { }
}
/*Continue with MainActivity*/
}
スプラッシュは、クリックするだけで閉じます。
public class InstructionsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.instructions_layout);
ImageView instructions = (ImageView) findViewById(R.id.ivInstructions);
instructions.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
}
問題: GUI が MainActivity onCreate() からブロックを取得した後に、命令アクティビティ (スプラッシュ) が表示されます。
手がかりはありますか?