无法使用QBCusomObjects从android中的主线程获取对象

时间:2015-06-30 17:02:22

标签: android quickblox

所以在我的应用程序中,我正在尝试获取我制作的一些自定义对象,并且我收到此错误:

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
            at android.os.Handler.<init>(Handler.java:200)
            at android.os.Handler.<init>(Handler.java:114)
            at com.quickblox.core.server.HttpRequestRunnable$1.<init>(HttpRequestRunnable.java:40)
            at com.quickblox.core.server.HttpRequestRunnable.<init>(HttpRequestRunnable.java:40)
            at com.quickblox.core.server.ThreadPoolIntentService.execute(ThreadPoolIntentService.java:23)
            at com.quickblox.core.server.HttpRequestTask.execute(HttpRequestTask.java:29)
            at com.quickblox.core.rest.RestRequest.asyncRequestWithCallback(RestRequest.java:110)
            at com.quickblox.core.query.Query.performInBgAsyncWithDelegate(Query.java:115)
            at com.quickblox.core.query.Query.performAsyncWithCallback(Query.java:218)
            at com.quickblox.customobjects.QBCustomObjects.getObjects(QBCustomObjects.java:532)

最初,我是从我生成的单独线程调用getObjects方法进行网络通信,因为在UI线程上执行它似乎是一个坏主意,因为当我尝试在UI线程上执行此操作时得到了NetworkCommunicationOnMainThread异常。

由于单独的线程不起作用,我将请求放在AsyncTask中以查看是否有帮助,并且它没有改变任何内容。

请求的代码在

之下
        final QBRequestGetBuilder requestBuilder = new QBRequestGetBuilder();

        try {
            Log.i(classTag, "Attempting to get UserID");
            requestBuilder.eq("User_ID", ""+ QBAuth.getSession().getUserId());
        } catch (QBResponseException e) {
            Log.e(classTag, "Failed to get UserID for current user");
            e.printStackTrace();
            return null;

        }

        QBCustomObjects.getObjects("Listing", requestBuilder, new QBEntityCallbackImpl<ArrayList<QBCustomObject>>() { ...}

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

此请求已在单独的线程中工作

SELECT * FROM Pippos WHERE pi.id NOT IN (SELECT PippoId FROM Plutos);

所以你不需要把它包起来

也有可能使用&#39; sync&#39;请求

相关问题