0

Activityアプリが初めて起動されているかどうかに基づいて、どれをロードするかを決定するスプラッシュ画面を作成しています..

コードは独自の Activity -MainActivityで実行され、スプラッシュ スクリーンとして機能します。初めて起動する場合は、ロードします。以前に起動しIntroActivityたことがある場合は、ロードします。PrimaryActivity

いくつか質問があります:

1) -runOnUiThreadこれを行うために正しい方法を使用していますか?

2) - ここ StackOverflow でスプラッシュ スクリーンに関連するトピックを調査しましHandlerた。

3)Thread -ロードするアクティビティを決定したら、これを閉じる必要がありますか?

ボーナス:

4) - 最終的には、このアクティビティをポップアップ スタイルの読み込みウィンドウにするつもりです..

これを達成する最も簡単な方法は何ですか?

提供されたヘルプに事前に感謝します!


私の現在のコードを以下に示します。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //  Make a Toast pop-up.
    Toast.makeText(MainActivity.this, "Checking Settings...", Toast.LENGTH_LONG).show();


    ////  BEGIN PREFERENCES CHECK  ////

    //  Set the wait time for the Splash screen.
    final int SPLASH_WAIT_TIME = 5000;

    //  Start new Thread to check for first start and load appropriate Activity.
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {

                //  Wait before continuing.
                try {
                    Thread.sleep(SPLASH_WAIT_TIME);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            //  Initialize SharedPreferences.
            SharedPreferences getPrefs = PreferenceManager
                    .getDefaultSharedPreferences(getBaseContext());

            //  Create a new boolean and preference and set it to true.
            boolean isFirstStart = getPrefs.getBoolean("firstStart", true);

            //  If the App has NEVER started before...
            if (isFirstStart) {

                //  Declare an Intent for loading IntroActivity.
                final Intent intentLoadIntro = new Intent(MainActivity.this, IntroActivity.class);

                //  Launch IntroActivity.
                runOnUiThread(new Runnable() {
                    @Override public void run() {
                        startActivity(intentLoadIntro);
                    }
                });

                //  Make a new Preferences Editor.
                SharedPreferences.Editor prefsEditor = getPrefs.edit();
                //  Edit Preference to make firstStart False so Intro never loads again.
                prefsEditor.putBoolean("firstStart", false);
                //  Apply the changes.
                prefsEditor.apply();

                //  Close MainActivity so the Back hardware button doesn't return to it.
                finish();

            }

            //  If the App HAS been started before...
            else {

                //  Declare an Intent for loading PrimaryActivity.
                final Intent intentLoadPrimary = new Intent (MainActivity.this, PrimaryActivity.class);

                //  Launch PrimaryActivity.
                runOnUiThread(new Runnable() {
                    @Override public void run() {
                        startActivity(intentLoadPrimary);
                    }
                });

                //  Close MainActivity so the Back hardware button doesn't return to it.
                finish();

            }

        }
    });

    //  Start Thread t to determine Activity to load after Splash (MainActivity).
    t.start();

//  END of onCreate.
}

//  End of MainActivity.
}
4

1 に答える 1