Android - running a method periodically using postDelayed() call

android, postdelayed

Solution

Why don't you create service and put logic in `onCreate()`. In this case even if you press back button service will keep on executing. and once you enter into application it will not call `onCreate()` again. Rather it will call `onStart()`

Problem

I have a situation in an Android app where I want to start a network activity (sending out some data) which should run every second. I achieve this as follows: In the `onCreate()` I have the code: ``` tv = new TextView(this); tv.postDelayed(sendData, 1000); ``` The `sendData()` function: ``` Handler handler = new Handler(); private Runnable sendData=new Runnable(){ public void run(){ try { //prepare and send the data here.. handler.removeCallbacks(sendData); handler.postDelayed(sendData, 1000); } catch (Exception e) { e.printStackTrace(); } } }; ``` The problem come in like this: When user presses the back buttons and app comes out (UI disappears) the `sendData()` function still gets executed which is what I want. Now when user re-starts the app, my `onCreate()` gets called again and I get `sendData()` invoked twice a second. It goes on like that. Every time user comes out and starts again, one more `sendData()` per second happens. What am I doing wrong? Is it my `new Handler()` creating problem? What is the best way to handle this? I want one `sendData()` call per second until user quits the app (form application manager).

Original source