0

私のアプリには次のアクティビティがあります。

  • ダッシュボード アクティビティ
  • スプラッシュ アクティビティ
  • 主な活動

必要なフローは次のとおりです。ダッシュ ボードには、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() からブロックを取得した後に、命令アクティビティ (スプラッシュ) が表示されます。

手がかりはありますか?

4

1 に答える 1

1

プロファイルが存在しない場合は、dashBoardActivity から条件チェック (IsProfileExists()) を実行し、Splash アクティビティを呼び出します。

于 2013-04-24T21:34:44.423 に答える