0

I want to create a delay in my code in such a way that one portion should be executed after 5 seconds and other portion after 10 seconds. I have tried TRY CAtcH threading but don't know where is the issue.. here Is my code kindly have a look at it.. Thanks in adavnce....

 // This portion to be executed after 5 seconds 

              val1 = Integer.parseInt(String.valueOf(unit.getText()));
              val2 = Integer.parseInt(String.valueOf(unit2.getText()));
              result = val1 + val2;

              val = Integer.toString(result);
             int len = val.length();

              if (len == 1) {

                  num1 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 1)));

                  unitanswer1.setText(Integer.toString(num1));
                  unitanswer2.setText(Integer.toString(0));
                  unitanswer2.setVisibility(View.INVISIBLE);

              } else {
                  num1 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 1)));
                  unitanswer1.setText(Integer.toString(num1));

                  num2 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 2)));
                  unitanswer2.setText(Integer.toString(num2));
              }

// This portion to be executed after 10 seconds

             val1 = Integer.parseInt(String.valueOf(tens.getText()));
             val2 = Integer.parseInt(String.valueOf(ten2.getText()));
             val3=Integer.parseInt(String.valueOf(unitanswer2.getText()));

             result = val1 + val2 + val3;

            val = Integer.toString(result);
             len = val.length();

            if (len == 1) {

                num1 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 1)));

               tenanswer1.setText(Integer.toString(num1));
                tenanswer2.setText(Integer.toString(0));
                tenanswer2.setVisibility(View.INVISIBLE);

            }
            else {
                num1 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 1)));
               tenanswer1.setText(Integer.toString(num1));

                num2 = Integer.parseInt(String.valueOf(val.toString().charAt(len - 2)));
                tenanswer2.setText(Integer.toString(num2));

                //Animation's work to be done here.....
                //remaining possibilites of addition....
            }
            }
Waqas Ahmed
  • 75
  • 2
  • 9

3 Answers3

3

Try this:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            // This portion to be executed after 5 seconds 
             ...
        }
    },5*1000);  

and this:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            //This portion to be executed after 10 seconds
            ... 
        }
    },10*1000);

Hope it helps you.

Nongthonbam Tonthoi
  • 12,667
  • 7
  • 37
  • 64
1

A generic function would be:

 /**
 * This function runs some actions after some delay
 *
 * @param delayInMilliSeconds the time delay in ms
 * @param runnable            the action to perform after the delay
 * @return the Handler object, with which one can cancel this action.
 */
public static Handler runDelayedAction(int delayInMilliSeconds, Runnable runnable) {
    final Handler handler = new Handler();
    handler.postDelayed(runnable, delayInMilliSeconds);
    return handler;
}

Usage:

Handler h = runDelayedAction(5000, new Runnable() {
    @Override
    public void run() {
        //DoSthYouLike();
    }
});

h.cancel(); //You can even cancel this at your own discretion.
David
  • 15,894
  • 22
  • 55
  • 66
0

You can use Aysnctask, I hope it helps.You can do as follow :

    SplashAsyncTask = new SplashAsyncTask();
    asyncTask.execute(SPLASH_TIME);

And SplashAsynctask would look like

     public class SplashAsyncTask extends AsyncTask<Integer, Integer, Void>{
        @Override
        protected Void doInBackground(Integer... integers) {
                SystemClock.sleep(integers[0]);
            return null;
        }
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            if(!isCancelled()){
                "do whatever task you have to do"
        }
    }

Define SPLASH_TIME as:

private static final int SPLASH_TIME=3000;

Nongthonbam Tonthoi
  • 12,667
  • 7
  • 37
  • 64
Riten
  • 2,879
  • 3
  • 24
  • 28