小编Mat*_*ich的帖子

如何实现执行AsyncTask的Timer/TimerTask?(机器人)

我正在尝试在指定的时间(即每隔几秒钟)异步重复执行任务(即从文本文件加载数据),尽管此速率可能会在运行时发生变化).

我做了一些研究,并决定这需要一个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();
    }       
}

}
Run Code Online (Sandbox Code Playgroud)

编辑:这是似乎相关的LogCat消息

致命异常:Timer-0

java.lang.ExceptionInInitializerError

在 ...

引起:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序

在 …

multithreading android timer timertask android-asynctask

3
推荐指数
1
解决办法
8444
查看次数