0

我想要一个速度不快的时钟/计时器,并且像while循环一样强制关闭。这股力量关闭:

while(loopEnabled == true)
{
    //Do stuff
   Toast toast Toast.makeText(this, "Hi!", 10000);
    toast.show();
}

这也是如此:

public void loop()
{
    //Do stuff
    Toast toast Toast.makeText(this, "Hi!", 10000);
    toast.show();

    resetLoop();
}

public void resetLoop()
{
    Thread.sleep(100);
    loop();
}

有什么办法可以阻止这种情况吗?我的意思是代码一次又一次地快速发生。

4

2 回答 2

2

查看 Handler 尤其是 postAtTime 或 postDelayed 方法。

例如:

private int mInterval = 1000; // in ms, so 1s here
private Handler mHandler;

@Override
protected void onCreate(Bundle bundle)
{

  mHandler = new Handler();
}

Runnable mRepeatingTask = new Runnable() 
{
     @Override 
     public void run() {

          // do something here

          // schedule run again for mTnterval ms from now
          mHandler.postDelayed(mRepeatingTask , mInterval);
     }
};

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

void stopTask()
{
    mHandler.removeCallbacks(mRepeatingTask);
}
于 2013-09-16T02:02:39.103 回答
1

您是在 UI 线程中执行此操作吗?如果是这样,请避免使用它,因为您很可能会收到“应用程序无响应”对话框。

在 android 中,定时器可以使用 TimerTask 和 Handlers 来实现。

检查此链接以获取所有示例代码。异步任务、处理程序和计时器

于 2013-09-16T00:59:53.853 回答