UI线程和其他线程之间的区别

时间:2012-06-15 15:01:57

标签: android multithreading android-activity

我有一个显示启动画面的应用。启动画面活动会创建一个新的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线程特殊

2 个答案:

答案 0 :(得分:1)

是的,没关系。 startActivity(intent)要求系统启动您的主Activity。你实际上并没有自己在你调用的线程中加载它。

答案 1 :(得分:0)

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

黑莓也一样。见Why are most UI frameworks single-threaded?