Tarek Eldeeb
Tarek Eldeeb

Reputation: 606

Force splash to show from onCreate Activity

My app has the following Activities:

This how the flow is required: The dash board has a button that starts up the MainActivity. The onCreate() method of the main activity checks if a user-profile was previously created, if yes, then it starts normally (this is fast, no GUI delay). If no user-profile is found, then it's required to display a splash screen having instructions/how-to for the mainActivity, meanwhile the onCreate() of the main activity creates a new user-profile file(slow and GUI blocking).

What I'm currently see is the splash/instructions showing delayed after the slow user-profile creation ends.

Here is a code snippet from 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*/
  }

The Splash dismisses itself by a click:

   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();
        }
    });
}
}

The problem: The Instructions Activity (splash) shows after the GUI gets block from the MainActivity onCreate().

Any clues?

Upvotes: 0

Views: 474

Answers (1)

deepdroid
deepdroid

Reputation: 633

Do the condition check (IsProfileExists()) from dashBoardActivity and call the Splash activity if profile doesn't exist.

Upvotes: 1

Related Questions