2013-06-14 16 views
6

Mam wyszukiwania, w jaki sposób mogę zrobić "Auto odświeżania" lub uruchomione metody dla mojego programu, widziałem kilka postów dotyczących obsługi i wątków ... Myślę, że co im szukaj od jest wątek, ale nie mogę dostać program do pracy ... pokażę ci kod:Android: "Automatyczne odświeżanie" po pewnym czasie

refresh.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      getUrlText(); 
      if (time.getText().toString().equals("") 
        || time.getText().toString().equals("0")) { 
       mins = 0; 
      } else { 

       mins = Integer.parseInt(time.getText().toString()); 
       setTimer(mins); 
       t.start(); 


      } 

     } 

     private void setTimer(int mins) { 
      miliSecTime = mins * 60 * 1000; 

     } 
    }); 

    t= new Thread() { 
     @Override 
     public void run() { 
      long start = System.currentTimeMillis(); 

      while (true) { 
       long time = System.currentTimeMillis() - start; 
       int seconds = (int) (time/1000); 
       if (seconds > miliSecTime) { 
        getUrlText(); 
        start = System.currentTimeMillis(); 

       } 
      } 
     } 
    }; 
} 

Tak, ta część kodu należy uzyskać numer z użytkownikiem, a następnie wykonać getUrlText() ; co x minut, gdzie x to liczba wprowadzana przez użytkownika ... Mój problem powinien być w biegu, ale nie wiem, co to jest ... Z góry dziękuję za pomoc :)

+0

Po coś takiego lepiej byłoby skorzystać z http://developer.android.com/reference/android/app/AlarmManager.html. – 323go

Odpowiedz

8

Oto jeden sposób to zrobić.

Declare je w swojej działalności:

Handler handler = new Handler(); 
Runnable timedTask = new Runnable(){ 

    @Override 
    public void run() { 
     getUrlText(); 
     handler.postDelayed(timedTask, 1000); 
    }}; 

Następnie ustawić onClick:

button.setOnClickListener(new OnClickListener() { 

    @Override 
     public void onClick(View v) { 
      getUrlText(); 
      handler.post(timedTask); 
     } 
    }); 

ten będzie wykonywał timedTask co 1000 milisekund. Zwiększ tę liczbę, jeśli to konieczne.

Nie jestem pewien, co robisz z mins i tak dalej, ale umieść całą swoją logikę, która musi być okresowo wykonywana w timedTaskRunnable. Mam nadzieję, że ma to sens.

2

1. utworzyć Handler

Handler handler = new Handler(); 

2. Tworzenie Runnable obiektu

public final Runnable runnable = new Runnable() { 

    @Override 
    public void run() { 
     // your code while refreshing activity 
    } 
}; 

3. Zaproszenie Metoda Handler Object

handler.postDelayed(runnable, 3000); 

// 3000 to czas w milisekundach

// umieścić tę metodę w onCreate()

// onResume() lub gdy orzeźwiający odbywać

5

Można użyć tego kodu do wdrożone Auto-refresh Twojej aktywności przez pewien czas, jak poniżej.

Najpierw możesz użyć przestrzeni nazw nagłówka jak poniżej.

import android.os.Handler; 

Po utworzeniu nowej instancji Handler.

private final Handler handler = new Handler(); 

Następnie należy napisać jedną metodę odświeżania jak poniżej i wezwać OnCreate metody zakresie, tutaj Użyłem 5000 milisekund lub 5 sekund. Możesz zmienić jako swoje życzenie.

private void doTheAutoRefresh() { 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // Write code for your refresh logic 
      doTheAutoRefresh(); 
     } 
    }, 5000); 
} 

Końcowy kod dla metody put automatycznego odświeżania jak poniżej.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    doTheAutoRefresh(); 
} 
Powiązane problemy