【发布时间】:2015-07-19 21:17:31
【问题描述】:
所以我正在尝试将多线程添加到我的应用程序中,但遇到了一个奇怪的问题。我创建了一个新的 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() 设置断点时,这些断点永远不会到达。
【问题讨论】:
标签: java android multithreading callback facebook-android-sdk