Android中的多线程 - 为什么我的onCompleted回调没有被调用?

时间:2015-07-19 21:17:31

标签: java android multithreading callback facebook-android-sdk

所以我试图在我的应用中添加多线程,而且我遇到了一个奇怪的问题。我创建了一个新的runnable来处理解析所有数据,以便应用程序在执行此操作时不会冻结,然后创建一个新线程来运行该runnable。但是,当线程启动并且run()被调用时,我注意到它从不调用onCompleted()。这对我来说很奇怪,因为如果我从run()部分中取出那个确切的代码块,它就可以完美地运行。

有谁能让我知道我做错了什么?我对Java中的多线程有点新意,所以我真的很感激。

    Runnable parseRunnable = new Runnable(){
        @Override
        public void run(){
            new Request(session, id + "/comments", null, HttpMethod.GET, new Request.Callback() {
                @Override
                public void onCompleted(Response response) {
                    try {
                        JSONArray msgs = response.getGraphObject().getInnerJSONObject().getJSONArray("data");
                        populateData(msgs);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    Request next = response.getRequestForPagedResults(Response.PagingDirection.NEXT);
                    retrieveMsgs(next);
                }
            }).executeAsync();
        }
    };

    Thread parseThread = new Thread(parseRunnable);
    parseThread.start();

我在run()和" new Request"设置断点。总是被击中,但是当我为onCompleted()设置断点时,永远不会达到它们。

1 个答案:

答案 0 :(得分:1)

当你到达结尾时,你的线程将会完成

public void run ()

我将假设你没有得到你的回调因为你的线程已经完成,因为你调用了executeAsync(它将在一个单独的线程上执行)。完全删除你的线程可能会解决你的问题。