如何在Android中每20秒调用一次方法

时间:2015-06-26 12:36:38

标签: android thread-safety

我想编写一个Android应用程序,打开时会在20秒后调用一个方法,然后每隔10秒调用一次方法。

有关如何进行的任何想法?

8 个答案:

答案 0 :(得分:21)

你可以用一个A B C D 1 1 5 $C$10 2 4 $C$10 3 3 6 $C$10 4 4 1 $C$10 5 5 9 $C$10 6 6 3 $C$10 7 75 $C$10 8 12 $C$10 9 9 55 $C$10 10 90 $C$10 11 $C$10 12 12 $C$10 这样做:

Handler

要每10秒重复一次,您可以在同一方法中添加以下行

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
   @Override
   public void run() {
       //Do something after 20 seconds
   }
}, 20000);  //the time is in miliseconds

像这样:

handler.postDelayed(this, 10000);

答案 1 :(得分:1)

您可以使用this,对于该实施,您可以像

那样使用
 public class ServiceController : Controller
 {
   [InvitationModeAttribute]
   public ActionResult Confirm()
   { 
     return RedirectToAction("Index", "Home");
   }
 }

答案 2 :(得分:1)

您可以使用闹钟管理器如果您想要工作,即使应用程序处于非活动状态(关闭)

它一直运行直到你不要阻止它。

这里是完整的例子

URL

http://javatechig.com/android/repeat-alarm-example-in-android

答案 3 :(得分:1)

声明一个处理程序对象:

Handler myHandler = new Handler();
myHandler.postDelayed(new Runnable() {
   @Override
   public void run() {
       //Do something after 20 seconds
    //call the method which is schedule to call after 20 sec
   }
}, 200000);  //the time is in miliseconds

- 10秒按上述方式执行操作,然后按循环重复。

希望这会有所帮助......谢谢

答案 4 :(得分:1)

CountDownTimer cdt;

cdt = new CountDownTimer(timeint * 60 * 1000, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {          
        Log.i(TAG, millisUntilFinished " millis left");
    }

    @Override
    public void onFinish() {
        Log.i(TAG, "Timer finished");
    }
};

cdt.start();

答案 5 :(得分:1)

请检查以下代码。

atexit

希望此代码能为您提供帮助。

答案 6 :(得分:0)

使用计时器类

private  CountDownTimer countDownTimer;

private void startTimer(final Context context) {

    if (countDownTimer != null) {
        countDownTimer.cancel();
        countDownTimer = null;
    }

    countDownTimer = new CountDownTimer(20 * 1000, 1 * 1000) {

        public void onTick(long millisUntilFinished) {

            //
        }

        public void onFinish() {



           yourMethod();



                startTimer(context);

            }
        }

    }.start();
}

答案 7 :(得分:0)

您需要使用自定义处理程序来完成这项工作。以下是您需要的示例:

public class Main extends Activity  { 
  private TextView txtStatus;
  private RefreshHandler mRedrawHandler = new RefreshHandler();

  class RefreshHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
      Main.this.updateUI();
    }

    public void sleep(long delayMillis) {
      this.removeMessages(0);
      sendMessageDelayed(obtainMessage(0), delayMillis);
    }
  };

  private void updateUI(){
    int currentInt = Integer.parseInt((String) txtStatus.getText()) + 10;
    if(currentInt <= 100){
      mRedrawHandler.sleep(10000);
      txtStatus.setText(String.valueOf(currentInt));
    }
  }

  @Override 
  public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main);
    this.txtStatus = (TextView) this.findViewById(R.id.txtStatus);

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
    @Override
      public void run() {
          updateUI();
        }
    }, 20000);  

  } 
}