0

我正在使用timeschedularandroid 来安排我的应用程序中的一个AsyncTask。我能够很好地解决它,现在我希望每次任务运行的持续时间都被更改,我正在使用此代码

  ip=3000;
    final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {       
    @Override
    public void run() {
        handler.post(new Runnable() {
            public void run() {       
                try {
                    play_duration=durat.get(vn);
                     ip=Integer.valueOf(play_duration);
                       ip=ShowImages.ip*1000;
                    Showtime s1 = new Showtime();
                    s1.execute(what,f12,transi,play_duration);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                }
            }
        });
    }
};
timer.schedule(doAsynchronousTask, 0,ip);

我试图每次在线程中更改 ip 变量的值,但它不会改变,我不知道为什么我的线程总是在 ip 的初始值 3000 毫秒之后运行,有人可以建议一种方法吗? 。谢谢

4

1 回答 1

0

要更改 UI 上的组件,请使用 runOnUiThread,请参见此处此处此处在后台执行该操作,您可以使用类似 -

while(true) 
{
  runOnUiThread() {
    do some stuf here;
  }
  Thread.Sleep(300); //<--- that should be nothing for the user and enough for the cpu 
}

如果您需要更准确的答案,请发布您的代码并指导您完成

于 2013-10-01T07:44:40.177 回答