[Java/Android] Timer (wywoływanie funkcji co minutę)


(MrGalek) #1

Hej
Mam problem chciałbym zrobić taki prosty Timer który co minutę będzie wywoływał jakąś funkcję np: sprawdzał stan tablicy czy listy. Szperałem w Google i są różne rozwiązania jednak implementacje ich wcale mi nie pomogłą. Jedno dość popularne było z utworzeniem klasy myTimerTask i odalaniu jej metody run w timerze.
Wolałbym jednak by (o ile się da) aby nie było to odpalane w osobnej klasie, czy dałoby sie tak ?

Zrobiłęm to tak ale niestety apka wcale się nie odpala :frowning:
public class MainActivity extends AppCompatActivity {

private Handler handler = new Handler();
Button but = (Button) findViewById(R.id.button);
final TextView lab = (TextView) findViewById(R.id.hello);
int licz = 0;

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

    but.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            handler.postDelayed(runnable,1000);
        }
    });
}

final Runnable runnable = new Runnable() {
    @Override
    public void run() {
            licz++;
            lab.setText(licz);
            handler.postDelayed(this, 1000);
    }
};

}

Pozdrawiam MrGalek


(dobaczenko) #2

Nie wiem czy dobrze rozumiem, ale:

> ScheduledService<Document> svc = new ScheduledService<Document>() {
>      protected Task<Document> createTask() {
>          return new Task<Document>() {
>              protected Document call() {
>                  // Connect to a Server
>                  // Get the XML document
>                  // Parse it into a document - generalnie tu mozesz wywolac swoje dzilajace cyklicznie
>                  return document;
>              }
>          };
>      }
>  };
>  svc.setPeriod(Duration.seconds(1));
> svc.start()

https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/ScheduledService.html