С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Узнать существует ли суперкласс - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Андроид с нуля http://www.cyberforum.ru/android-dev/thread1027341.html
Доброго времени суток! В общем мне задали писать курсовой на тему !Приложение : камера для Андроид!, то есть создать прогу которая будет открывать камеру, фотографировать и сохранять фото. Никогда...
Программирование Android SQLite база данных с паролем Есть база данных защищенная ключом! Сама база данных хранится на устройстве. При подключении к базе надо как то передать пароль, но в интернете ничего не нашел на эту тему. Подключение... http://www.cyberforum.ru/android-dev/thread1027182.html
DataBase и ViewPage Программирование Android
Пробую создать пример, который выводит с базы данных (SqLite) информацию в ViewPage, но попытки не удаются. На просторах интернета не нашел, готово даже простого примера, который бы это делал. Может...
Перевод из 10 сс в 2, 8, 16 систему счисления Программирование Android
Всем доброго времени суток! Прошу о помощи. Нужно написать приложение на андроид, которое осуществляет перевод. Никак не могу найти код перевода.. приложений множество, а кода нет.. Может быть у...
Программирование Android В каком месте кода нужно вызвать LoaderManager при работе с диалогами? http://www.cyberforum.ru/android-dev/thread1027123.html
Здравствуйте. У меня вот такой вопрос: у меня есть список, который заполняется из базы данных с помощью CursorLoader. При долгом нажатии на одном из пунктов этого списка выскакивает АлертДиалог,...
Программирование Android как прочитать обложку и метаданные с аудио файла? Ысем привет! скажите пожалуйста, как прочитать обложку и метаданные с аудио файла? а то на сайте Android API не вижу. но должно быть. стандартный плеер это умеет делать. Добавлено через 41 минуту... подробнее

Показать сообщение отдельно
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 524

Узнать существует ли суперкласс - Программирование Android

04.12.2013, 14:21. Просмотров 329. Ответов 0
Метки (Все метки)

Есть суперкласс который запускает поток (поток использует блютуз). В момент краха суперкласса, поток остается в памяти и продолжает использовать блютуз. Соответственно при перезапуске приложения блютуз уже занят.
Подскажите, как можно узнать что суперкласс работает? Или как освободить занятый блютуз?

Хочу реализовать на взаимодействии потока с суперклассом (опрос переменной метода класса потока, которую суперкласс периодически изменяет, если переменная не была изменена - завершаем работу потока). Можнт есть более изящное решение?

Добавлено через 18 часов 12 минут
Сделал так. Хендлер главного активити:
Java
1
2
3
4
5
6
7
8
9
10
11
12
    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            .  .  .
            .  .  .
            case MESSAGE_BLUETOOTH_STATE:
                    myBluetoothService.ActivityIsAlive(true);
                break;
            }
        }
    };
Метод ActivityIsAlive потока
Java
1
2
3
4
5
    public boolean ActivityIsAlive(boolean IsAlive){
        boolean Temp = LastActivityState;
        LastActivityState = IsAlive;
        return Temp;
    }
И один из потоков класса работы с блютузом:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
   private class StateConnectThread extends Thread {
       boolean fReadStatusData = true;
 
       public StateConnectThread() {
 
       }
 
       public void run() {
           boolean FerstCycle = true;
           while(fReadStatusData){
                if (FerstCycle){
                    if (!ActivityIsAlive(false)) StopAllThreads();
                    
                    if (mDataState) mHandler.obtainMessage(MainActivity.MESSAGE_BLUETOOTH_STATE, MainActivity.BT_STATE_OK, mState).sendToTarget();
                    else mHandler.obtainMessage(MainActivity.MESSAGE_BLUETOOTH_STATE, MainActivity.BT_STATE_ERR, mState).sendToTarget();
                    mDataState = false;
                    FerstCycle = false;
                }else{
                    mHandler.obtainMessage(MainActivity.MESSAGE_BLUETOOTH_STATE, MainActivity.BT_STATE_ERR, mState).sendToTarget();
                    FerstCycle = true;
                }
                    
                try {   
                    TimeUnit.MILLISECONDS.sleep(300);
                }
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
           }
 
       }
 
       public void cancel() {
           fReadStatusData = false;
           
       }
       
       private void StopAllThreads(){
           if (mConnectThread != null) {
             mConnectThread.cancel();
             mConnectThread = null;
           }
 
           if (mConnectedThread != null) {
             mConnectedThread.cancel();
             mConnectedThread = null;
           }
           
           setState(STATE_NONE);                    
           cancel();  
       }
   }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.