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

Multithreading in Android - why doesn't my onCompleted callback get called?

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

谁能告诉我我做错了什么?我对 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();

我在 运行() 和 "new Request" 处设置了一个断点,它总是被命中,但是当我为 onCompleted() 设置断点时,这些断点永远不会到达。

当您到达

的末尾时,您的线程将结束
public void run ()

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