0

我需要启动后台任务。任务调用异步 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();
    }
}

你能帮我吗?

谢谢

卢卡

4

2 回答 2

0

根据以下帖子,您正在一个线程中执行某些操作,该线程应该在主线程上调用!在myCall();做什么?

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

我建议使用 volley:

[编辑]

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

于 2013-10-22T22:04:20.480 回答
0

例如,当数据更改时,我需要刷新适配器列表。从网络服务器返回的数据可以更改或不更改。如果它被改变,我必须刷新列表视图/适配器,否则什么都没有。

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

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

  java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
于 2013-10-23T08:35:14.997 回答