我可以从java.util.TimerTask :: run()运行Activity类方法吗?

时间:2011-10-13 01:11:10

标签: android timer

在我的Android代码中,我通过调用Timer.schedule(myTask,0,1000)来响应按钮按下,调用myTimerTask :: run(),这是这样的:

嵌套在我的活动中:

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最终执行代码会不会更好?

1 个答案:

答案 0 :(得分:1)

您需要使用以下代码。要知道原因检查以下线程 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);