2013-09-10 4 views
0

Мне нужно постоянно проверять значение переменной. Это значение, которое я получаю от входного потока bluetooth, это объяснение, почему мне нужно, чтобы он постоянно проверял его.Таймер для планирования задачи

Что мне нужно сделать, так это то, что когда я вызываю функцию, она возвращает мне значение, сохраненное в переменной в тот момент.

Для этого, я делаю это:

private final Handler refresh_handler = new Handler(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    Runnable refresh_input = new Runnable() { 
     @Override 
     public void run() { 
      bt_read_input = GlobalVar.bt_input; //Save received value in a local variable 
      refresh_handler.postDelayed(refresh_input, 500); 
     } 
    }; 
} 

refresh_handler.post(refresh_input); //Call to the function 

Это, кажется, освежает переменную каждый 0,5sec. Но мне все еще нужно, чтобы, когда я это называю, он возвращает мне значение фактической переменной, это значение bt_read_input в этот момент.

Как я мог реализовать функцию для этого в качестве таймера, но также и вернуть значение переменной, чтобы получить ее, когда захочу?

+0

В чем Ваш вопрос? –

+0

Как я мог реализовать функцию для этого в качестве таймера, но также и вернуть значение переменной, чтобы получить ее, когда захочу? – masmic

ответ

0

я, наконец, достиг этого очень простым способом:

private final Runnable refresh_input = new Runnable() { 

@Override 
public void run() { 
    bt_read_input = GlobalVar.bt_input; 
    } 
    refresh_handler.postDelayed(refresh_input, 250); 
} 

};

Таким образом, я обновляю значение переменной каждые 250 мс, и когда я хочу использовать его значение, я просто позвоню, чтобы позвонить в bt_read_input.

0

Попробуйте этот путь

1) создать интерфейс сказать BloothListener.java

public interface BloothListener { 
     void onReadValue(String value); 
    } 

2) Создание функций сказать startListing

public void startListing(final BloothListener bloothListener){ 

     final Handler mHandler = new Handler(); 
     try{ 
      final Timer t = new Timer(); 
      t.schedule(new TimerTask() { 

       @Override 
       public void run() { 
        final String bt_read_input = GlobalVar.bt_input; 
        mHandler.post(new Runnable() { 

         @Override 
         public void run() { 
          bloothListener.onReadValue(bt_read_input); 
         } 
        }); 
       } 
      }, 0, 500); 
     }catch (Exception e) { 
     } 

    } 

3) Как использовать от вашей деятельности onCreate() метод

startListing(new BloothListener() { 

      @Override 
      public void onReadValue(String value) { 
       // get your value and use it 

      } 
     }); 
+0

Хорошо, я создал новый класс под названием BloothListener.java и скопировал там 1) и 2). Но после каждого закрытия '}' появляется ошибка, говорящая мне удалить токен. Так, может, я копирую его неправильно? Я должен добавить что-то еще? – masmic

+0

его ошибка синтаксиса, как я могу узнать, как вы вставляли его? –

+0

Я скопировал его, как вы выразились здесь. Сначала 1), а после него 2) в BloothListener.java – masmic

Смежные вопросы