如何在android中停止计时器

时间:2012-04-09 10:14:12

标签: android timer uiimageview

这是我的代码,我在图像视图中动态更改了一些iamges。     公共类LoadingScreen扩展了Activity {

public static Integer[] imageList={R.drawable.food_pics1,R.drawable.food_pics2,R.drawable.food_pics3,
    R.drawable.food_pics4,R.drawable.food_pics5,R.drawable.food_pics6,R.drawable.food_pics7,
    R.drawable.food_pics8,R.drawable.food_pics9};
Thread thread;
ImageView foodImageView;
final Handler myHandler=new Handler();
public int currentImageIndex=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.load_xml);
    foodImageView=(ImageView)findViewById(R.id.imageView_food);
    //      final int i=0;

    final Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            animateImages();
        }


    };

    final int delay=500;            
    final long period=1000;
    Timer timer=new Timer();

    timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            myHandler.post(runnable);
        }
    }, delay, period);
}

private void animateImages() {
    // TODO Auto-generated method stub
        foodImageView.setImageResource(imageList[currentImageIndex%imageList.length]);
        currentImageIndex++;
        foodImageView.getAnimation();
}

我想停止计时器并在20秒后完成此活动。我可以这样做。

3 个答案:

答案 0 :(得分:1)

尝试使用它,

 View v = new View(this);
        v.postDelayed(new Runnable(){
            public void run() {
                // TODO Auto-generated method stub
                //cancel your animation and finish the Activity here.
                finish();
            }
         }, (long) 20000.0);

答案 1 :(得分:0)

你可以这样说:

timer.cancel();
timer = null;

答案 2 :(得分:0)

将TimerTask实例保存在类中并在其上调用cancel

以下是我发现非常有用的提示没有使用Java的Timer:尝试在UI线程中同步事物,特别是如果你想做UI任务。例如:

... onCreate() {
getUiThreadHandler().post(new Runnable(){
  if (canceled()) {
    return;
  }

  // Actual work
  ...

  // Invoke again after delay
  getUiThreadHandler().postDelayed(this, 500);
});
祝你好运