Arhn - архитектура программирования

Как создать логический метод для возврата значения из обработчика

Я создал класс для проверки доступа к Интернету на устройстве, мой код класса

public class CheckInternet  {


private static Handler h = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what != 1) { // code if not connected
                status = false;
                System.out.println("Status False");
            } else { // code if connected
                status = true;
                System.out.println("Status True");
            }
        }
    };

private static  void isNetworkAvailable(final Handler handler, final int timeout) {
        new Thread() {
            private boolean responded = false;  
            @Override
            public void run() {
                new Thread() {
                    @Override
                    public void run() {
                        HttpGet requestForTest = new HttpGet("http://m.google.com");
                        try {
                            new DefaultHttpClient().execute(requestForTest); // can last...
                            responded = true;
                        } catch (Exception e) {}
                    }

                }.start();

                try {
                    int waited = 0;
                    while(!responded && (waited < timeout)) {
                        sleep(100);
                        if(!responded ) { 
                            waited += 100;
                        }
                    }
                } 
                catch(InterruptedException e) {} // do nothing 
                finally { 
                    if (!responded) { handler.sendEmptyMessage(0); 


                    } 
                    else { handler.sendEmptyMessage(1); 
                    }
                }

            }

        }.start();



    }
}

Я хочу создать общедоступный статический логический метод, который возвращает мне статус, я придумал некоторый код

private static Boolean status = true ;    
public static Boolean isConnected() {
            Runnable runnable = new Runnable() {
                public void run() {
                    // TODO Auto-generated method stub
                    isNetworkAvailable(h,2000);
                }
            };
            runnable.run();
            return status;
        }

Но проблема в том, что он всегда возвращает мне старое значение статуса, так как во время работы потока метод отправляет мне старое значение статуса. Я хочу получить обновленное значение статуса.


Ответы:


1

Вам лучше использовать

достижимо(время ожидания)

http://docs.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable%28java.net.NetworkInterface,%20int,%20int%29

С Уважением

16.12.2011
  • будет ли это работать на устройстве Android? public static Boolean test() { try { InetAddress inetAddress = InetAddress.getByName(www.google.com); if(inetAddress.isReachable(1000)) { System.out.println(подключено); вернуть истину; } else { System.out.println(не подключен); вернуть ложь; } } catch (Exception e) { // Автоматически сгенерированный блок catch TODO e.printStackTrace(); System.err.println(e.getMessage()); вернуть ложь; } } этот код показывает, что устройство не подключено, хотя мое устройство подключено. 16.12.2011
  • В этом случае ваше приложение не сможет подключиться к www.googe.com. 16.12.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..