как изменить элемент пользовательского интерфейса в новой задаче thread.onDone ()?

Как я могу это сделать?

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        FacebookConnectTask task = 
                new FacebookConnectTask("facebookId", "token", "email", facebookGender,0, 0);
        task.setOnPreExecuteListener(this);
        task.setOnDoneListener(this);
        task.execute();
    }
});
t.start();

public void onPreExecute() { 
    progressbar.setVisibility(View.VISIBLE);
}

public void onDone() { 
    progressbar.setVisibility(View.GONE);
}

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

0
nl ja de

2 ответы

Вы можете выполнить работу в AyncTask . AsyncTask выполняет все в doInBackground() внутри другого потока, который не имеет доступа к графическому интерфейсу, в котором отображаются ваши представления.

preExecute() and postExecute() offer you access to GUI before and after the heavy lifting occurs in this new thread, you can even pass the result of the long operation to postExecute() to then show any results of processing.

More here: http://developer.android.com/reference/android/os/AsyncTask.html

Example here: http://www.vogella.com/articles/AndroidPerformance/article.html

2
добавлено
перед тем, как я увидел ваш ответ, я попробовал runOnUiThread (новый Runnable ... и он сработал. Как вы думаете, это превосходное решение? Мне кажется, это немного msss для меня ...
добавлено автор roiberg, источник
достаточно для меня! и его работа.
добавлено автор roiberg, источник
Это очень удобно. Структура AsyncTask имеет дело с управлением пулом потоков и обеспечивает простой, понятный интерфейс. - активность пользовательского интерфейса может выполняться в onPreExecute() , onPostExecute() и onProgressUpdate() , и что весь «тяжелый подъем» "выполняется в doInBackground() , где вы не можете коснуться пользовательского интерфейса. Почему бы не пойти так, как создавать и пытаться управлять своими потоками
добавлено автор Slartibartfast, источник

внутри вашей деятельности

private Handler myHandler=new Handler();

следующий в вашем сделанном обратном вызове

public void onDone() { 
myHandler.post(new Runnable(){
   @Override
   public void run() {
      progressbar.setVisibility(View.GONE)
   }
})
}

Но как уже было сказано. AsyncTask более подходит для него

1
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)