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

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

Войти
Регистрация
Восстановить пароль
 
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 510
#1

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

04.12.2013, 14:21. Просмотров 315. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Узнать существует ли суперкласс (Программирование Android):

Даны 3 стороны треугольника, узнать существует ли он, если да, то узнать какой он - Turbo Pascal
Помогите бо сегодня вообще не хачу думать! Даны 3 стороны треугольника, узнать существует ли он(это я знаю), если да, то узнать какой...

Узнать существует ли предел - Математический анализ
Здравствуйте, помогите, пожалуйста с доказательством. Нужно узнать существует ли предел \lim_{(x,y)\rightarrow (+\propto,0)...

Узнать существует ли файл - C#
Как узнать существует ли файл?

Как узнать существует ли файЛ? - C++/CLI
Как узнать, есть ли файл по адресу "C:\файл" ?

Как узнать, существует ли email в БД? - PHP БД
Всем привет! У меня есть БД. В ней хранятся email . Так вот, я хочу сделать, так, если email в БД существует то пишу, такой email...

Узнать, существует ли конкретная таблица в БД - SQL Server
Как можно узнать через запрос SQL, существует ли конкретная таблица в БД? Спасибо

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 14:21
Привет! Вот еще темы с ответами:

Как узнать существует ли объект ? - JavaScript
Родился новый вопрос: как узнать существует ли объект ??? тоесть есть ли в сесии Session('anArr'). в VB есть isObject, а как на...

Как узнать, существует ли таблица? - MS Access
podskajite, kak uznat sushestvuyetli table 'tblName' ili net rabotayu v Access XP spasibo za vnimaniye

Как узнать существует ли страница? - Delphi
Загружаю страницы из заранее созданного списка, и если страницы не существует то программа критует, пишет 404 нот фоунд, как этого...

Как узнать существует ли в БД нужная строка? - Delphi БД
У меня приложение в Delphi7 соединено через ADO с MySQL. Не могу сообразить как узнать существует ли нужная строка в БД. На запрос: ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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