Безопасен ли запуск и активность из не-пользовательского потока? - PullRequest
18 голосов
/ 21 июля 2010

Предположим, что мой поток активности порождает отдельный поток в какой-то момент.Безопасно ли для этого нового потока запускать Намерение для запуска нового действия?

Спасибо

Ответы [ 3 ]

10 голосов
/ 21 июля 2010

Я могу ошибаться, но я думаю, что startActivity() внутренне выполняется в потоке пользовательского интерфейса. Так что да, это должно быть безопасно.

Если вы хотите быть на 100% уверенным, вызовите свой startActivity() в runOnUiThread() своей деятельности как Runnable.

6 голосов
/ 14 ноября 2012

Первые несколько строк startActivityForResult() (используются всеми вариантами startActivity()) предполагают, что все в порядке:

public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
    if (mParent == null) {
        Instrumentation.ActivityResult ar =
            mInstrumentation.execStartActivity(
                this, mMainThread.getApplicationThread(), mToken, this,
                intent, requestCode, options);
0 голосов
/ 16 апреля 2011

Я провел эксперимент: - запустил активность из потока, не являющегося пользовательским интерфейсом, и в onCreate () поместил цикл от 1 до 100, где я печатал имя потока Thread.currentThread () - поставил тот же цикл сразу после начала действия в неПользовательский поток

На выходе одновременно отображались их имена Thread [AsyncTask # 1,5, main] и Thread [main, 5, main]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...