0

When I start the app "specific function" needs to be executed.

After 10 seconds "specific function" needs to be triggered again.

After this second operation "specific function" should not triggered again.

jwpfox
  • 5,124
  • 11
  • 45
  • 42
Kamlesh
  • 31
  • 4

2 Answers2

0

There are two way to handle your problem.

  1. If there is any condition you want to check and accordingly do the work after every 10 seconds You should Use a Handler.

  2. If there is no condition on anything and you just want to run the code after every 10 Seconds. Then TimerTask is also one way. I have actually worked with TimerTask class. So i say it is quite easy.

Creating your class and implementing the methods.

class myTaskTimer extends TimerTask{

        @Override
        public void run() {
            Log.e("TAG", "run: "+"timer x");
        }
    }

and now in your code Create a new Timer Object and initialize it.

Timer t = new Timer();

Now you can schedule your task in it after a specified interval like below:

t.scheduleAtFixedRate(new myTaskTimer(),10000,10000);

The function is explained below:

void scheduleAtFixedRate (TimerTask task, long delay, long period)

Schedules the specified task for repeated fixed-rate execution, beginning after the specified delay. Subsequent executions take place at approximately regular intervals, separated by the specified period.

and now for handler , below is the code and it can check for any condition. Code taken from here for your help.

private int mInterval = 10000; // 10 seconds as you need
private Handler mHandler;

@Override
protected void onCreate(Bundle bundle) {

    // your code here

    mHandler = new Handler();
    startRepeatingTask();
}

@Override
public void onDestroy() {
    super.onDestroy();
    stopRepeatingTask();
}

Runnable mStatusChecker = new Runnable() {
    @Override 
    public void run() {
          try {
               updateStatus(); //this function can change value of mInterval.
          } finally {
               // 100% guarantee that this always happens, even if
               // your update method throws an exception
               mHandler.postDelayed(mStatusChecker, mInterval);
          }
    }
};

void startRepeatingTask() {
    mStatusChecker.run(); 
}

void stopRepeatingTask() {
    mHandler.removeCallbacks(mStatusChecker);
}

I hope it helps.

Sahil
  • 1,399
  • 9
  • 11
0

Use android.os.Handler as per @pskink comment.

private void callSomeMethodTwice(){
    context.myMethod(); //calling 1st time
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run(){
            context.myMethod(); //calling 2nd time after 10 sec
        }
    },10000};
}
Vivek Sinha
  • 1,556
  • 1
  • 13
  • 24