3

我有一个显示启动画面的应用程序。启动屏幕活动创建一个新的 Runnable,它只是休眠 1 秒,然后启动主要活动:

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

Yes, that's fine. startActivity(intent) asks the system to launch your main Activity. You're not actually loading it yourself in the thread you call that from.

于 2012-06-15T15:14:47.057 回答
0

基本上这是一个single-thread model只有一个线程可以修改 UI 的地方,因为 Android UI 工具包不是线程安全的。

黑莓也一样。请参阅为什么大多数 UI 框架都是单线程的?

于 2012-06-15T15:07:43.363 回答