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

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

Войти
Регистрация
Восстановить пароль
 
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
#1

ConditionVariable - Android

23.02.2015, 21:07. Просмотров 170. Ответов 0
Метки нет (Все метки)

Привет. Есть след код:
Java
1
2
3
4
5
6
7
8
public static char get() {
        ESiInterpreter.getInstance().enablePutButton();
        // wait for user input
        ESiInterpreter.getInstance().conditionVar.block();
        ESiInterpreter.getInstance().conditionVar.close();
        
        return IODialog.getInstance().getInput();
    }
он ждет ввода. В onClick кнопки я пишу ESiInterpreter.getInstance().conditionVar.open();. А в методе stop:
Java
1
2
3
4
5
6
7
8
public void stop() {
        instance = null;
        
        IODialog.getInstance().clearOutput();
 
        conditionVar.open();
        conditionVar.cancel(true);
    }
Код MyConditionVariable:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class MyConditionVariable extends ConditionVariable {
    private volatile boolean mCancel;
    
    MyConditionVariable() {
        super(false);
    }
    
    public void cancel(boolean state) {
        synchronized(this) {
            mCancel = state;
        }
    }
    
    public boolean isCancelled() {
        synchronized(this) {
            return mCancel;
        }
    }
 
    @Override
    public void close() {
        if (!isCancelled()) {
            super.close();
        }
    }
}
мне нужно чтобы когда я вызывал cancel(true) поток не блокировался вообще. Я вот попробовал, но не получилось. Зарание спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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