如何实现执行AsyncTask的Timer / TimerTask? (Android)

| 我正在尝试在指定的时间(即,每隔几秒钟,尽管此速率在运行时可能会发生变化)异步且重复地执行任务(即,从文本文件加载数据)。 我进行了一些研究,并决定这将需要AsyncTask或单独的线程。为了简单起见,我决定使用AsyncTask。 现在,我需要根据重复的计时器计划执行此AsyncTask。我相信我必须利用Timer和TimerTask。 下面的代码是我要实现的简单形式。当我尝试使用Android仿真器(通过Eclipse IDE)运行此代码时,收到以下消息:\“抱歉!该应用程序意外停止。请重试。\” 我想知道问题出在哪里以及如何解决。谢谢!
public class Sample extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    SimpleTimerTask myTimerTask = new SimpleTimerTask(); 

    long delay = 0;
    long period = 5000;

    Timer myTimer = new Timer();
    myTimer.schedule(myTimerTask, delay, period);
}


private class SimpleAsyncTask extends AsyncTask<Void, Void, Void> {
    protected Void doInBackground(Void... params) {
        return null;
    }   
}


private class SimpleTimerTask extends TimerTask {
    public void run() {
        new SimpleAsyncTask().execute();
    }       
}

}
编辑:这是似乎相关的LogCat消息 致命异常:计时器-0 java.lang.ExceptionInInitializerError 在 ... 原因:java.lang.RuntimeException:无法在尚未调用Looper.prepare()的线程内创建处理程序 在 ...     
已邀请:
您正在使这种方式变得比原来更难。
TimerTask
已经在其自己的线程上运行,因此您无需使用
AsyncTask
,只需将要运行的代码放在put3ѭ方法中即可。     
如果要从OnPostExecute方法更新UI,则将timertask与asynctask一起使用存在严重限制。计时器在单独的线程中运行,因此您必须找到一种从主线程启动asynctask的方法。     

要回复问题请先登录注册