Android后台任务

时间:2013-10-22 22:01:30

标签: android android-asynctask

我需要开始后台任务。任务调用异步http请求,如果条件有效则显示警报。

我实现了它,但是收到了这个错误:

  

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

这是我的java代码:

    Timer timer = new Timer();
    timer.schedule(new RequestScheduledTask(), intervalTask);

    class RequestScheduledTask extends TimerTask {
    @Override
    public void run() {
            myCall();
    }
}

你能帮我吗?

谢谢

卢卡

2 个答案:

答案 0 :(得分:0)

根据以下帖子,你在一个主线程上调用的线程中做了一些事情!什么是myCall();在做什么?

并且不要使用异常任务执行http请求,这是不好的做法。

我会建议使用凌空:

[编辑]

好的,应该在主线程上调用加载指示符。我猜你是在AsyncTask中做的。 您可以使用Activity.runOnUiThread(Runnable())运行runnable来显示它。

答案 1 :(得分:0)

例如,我需要在更改数据时刷新适配器列表。从webserver返回的数据可以更改或不更改。如果它被更改我必须刷新listview / adapter,否则没有。

myCall呼叫服务器,获取数据响应(使用其他框架,如凌空),然后更新列表视图。

当myCall启动时,我想要显示加载指示器,但是当我显示它时,应用程序崩溃并出现运行时异常

  java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()