3

スプラッシュ画面を表示するアプリがあります。スプラッシュ スクリーン アクティビティは、単純に 1 秒間スリープしてからメイン アクティビティを起動する新しい Runnable を作成します。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    UKMPGDataProvider.init(this.getApplicationContext(), Constants.DATABASE_NAME);

    Thread splashThread = new Thread() {
        @Override
        public void run() {
            try {
                sleep(ONE_SECOND_IN_MILLIS);
            } catch (InterruptedException e) {
            } finally {
                Intent intent = new Intent(SplashScreen.this, MainScreen.class);
                finish();
                startActivity(intent);
            }
        }
    };
    splashThread.start();
}

この新しいスレッドでメイン アクティビティ (したがって、スプラッシュ スクリーンを除くアプリ全体) を起動しても問題ありませんか?

Android の「UI スレッド」についてよく耳にします。この新しいスレッドは UI スレッドになりますか、それとも UI スレッドは何らかの形で特別なものですか?

4

2 に答える 2

1

はい、大丈夫です。 startActivity(intent)main を起動するようにシステムに要求しますActivity。実際には、それを呼び出すスレッドに自分でロードしているわけではありません。

于 2012-06-15T15:14:47.057 に答える
0

single-thread modelAndroid UI ツールキットはスレッドセーフではないため、基本的には 1 つのスレッドのみが UI を変更できます。

ブラックベリーでも同じです。ほとんどの UI フレームワークがシングルスレッドである理由を参照してください。

于 2012-06-15T15:07:43.363 に答える