2011-10-13 54 views
1

里面我的Android代码中,我通过调用Timer.schedule(myTask,0,1000),这就要求myTimerTask :: run()中,它是这样的响应按钮按下:嵌套我可以从java.util.TimerTask :: run()运行Activity类方法吗?

我活动:

class mytimerTask extends TimerTask { 
    @Override 
    public void run() { 
     //update my progress bar 
     //if progress bar is full, i want to call a function that is in my activity 
    } 
} 

我可以直接引用TimerTask中的一个Activity方法吗?当我尝试它时,似乎会使应用程序崩溃。

对我来说,处理我的ProgressBar和从Runnable代替Timer/TimerTask最终执行代码会更好吗?

回答

0

您需要如下代码。要知道原因,检查以下螺纹 What is the Android UiThread (UI thread)http://developer.android.com/resources/articles/painless-threading.html

Timer t; 
    Handler handler = new Handler(); 


t = new Timer(); 
Class MyTimerTask extends TimerTask{ 
    public void run() { 
      handler.post(new Runnable() { 
        public void run() { 
         //update my progress bar 
    //if progress bar is full, i want to call a function that is in my activity 

        } 
      }); 
    } 

    t.schedule(timeTask, 0, 1000); 
+1

所以你说,如果我有一个定义的run(),它应该执行的,而不是延长的TimerTask像我的声明像这样作为一个实际的TimerTask? – Brianide

+0

不想说,我不想说,如果你正在尝试更新UI的活动,它应该从UI线程完成。 – Vivek

+0

谢谢。我会试试看看它是否有效。 – Brianide

相关问题