Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Потокобезопасный вызов процедур через Handler - Программирование Android

04.11.2013, 00:21. Просмотров 449. Ответов 2
Метки нет (Все метки)

Пытаюсь написать потокобезопасные сообщения через через Handler.

Примерно это выглядит ТАК:

Java
1
2
3
4
5
6
7
private static Handler Tread1_Handler = new Handler(); // заготовка для синхронизации с основным потоком!
private Context cont; // =this
 
...
Tread1_Handler.post(new Runnable() {public void run() { // синхронизируем
   Toast.makeText(cont, "HELLO!", Toast.LENGTH_LONG).show();
}});
Все работает... но! Как мне ПЕРЕДАТЬ потоко-безопасно несколько параметров разного типа в конкретно ЭТОТ вызов потока? Например заменить HELLO на String mess? Передать булеан для LONG или SHORT?
Если делать это глобальными переменными, то при вызове подряд двух сообщений могу получить одинаковый результат - выполнение первого вызова началось только после заполнения вторых параметров.

Пока что решаю это списком типа PUSH и POP, но это не удобно... Подозреваю что есть более простое ГОТОВОЕ решение! Но как??? Подскажите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 00:21     Потокобезопасный вызов процедур через Handler
Посмотрите здесь:
Android Handler
Android Handler
Android Не работает Handler
Handler timer Android
Про Handler и ProgressBar Android
Handler и интервал времени Android
Handler, поток не останавливается Android
Handler vs Service vs AsynkTask Android
Android Работа с Handler из другого активити
Android Handler при пересоздании активити
Android Потоки (Handler внутри synchronized)
Android Передача сообщения из потока. Handler

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
04.11.2013, 00:33     Потокобезопасный вызов процедур через Handler #2
1. Сделать метод synchronized.
2. Вызвать его.
3. Готово. Вы восхитительны.
Java
1
2
3
4
5
6
7
8
public synchronized void method(final String param1, final long param2) {
Tread1_Handler.post(new Runnable() {
     @Override
     public void run() {
          Toast.makeText(cont, param1, Toast.LENGTH_LONG).show();
     }
});
}
А еще есть volatile (работает корректно, кажется, только с 4.0)
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.11.2013, 01:33  [ТС]     Потокобезопасный вызов процедур через Handler #3
То что нужно! Спасибо!
Yandex
Объявления
04.11.2013, 01:33     Потокобезопасный вызов процедур через Handler
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru