【问题标题】:Difference between UI thread and other threadsUI线程与其他线程的区别
【发布时间】:2012-06-15 15:01:56
【问题描述】:

我有一个显示启动画面的应用。初始屏幕活动创建一个新的 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 线程在某些方面特殊

【问题讨论】:

    标签: android multithreading android-activity


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      在黑莓中也是如此。见Why are most UI frameworks single-threaded?

      【讨论】:

      • 好的,但问题是是否可以从非 ui 线程启动 Activity,或者这是否正在发生。
      猜你喜欢
      • 2021-05-18
      • 2017-04-08
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多