我是Java新手,但多年来一直是.NET开发人员,我对RequestListener对象的一点点感到困惑,因为我无法在UI线程上检索异步调用的结果我可以告诉你。我的研究告诉我,我不应该使用单例或应用程序上下文对象来获取和存储数据。我可以使用sqlLite,但我需要的数据太短暂而无法理解。我想知道如何让asyncfacebookrunner对象报告它对UI线程的响应,这样我就可以继续在我自己的api和从我在异步调用中进行的facebook调用返回给我的对象之间做出决定。
我错过了什么吗?我似乎无法找到一种方法来获取数据。我可以通过Bundle,但我不太清楚如何获取数据。我想我会传递一个Intent对象来检索,但我没有看到它。我认为此时我的眼睛因睡眠不足而交叉。这里有什么帮助吗?
答案 0 :(得分:0)
AsyncFacebookRunner自动在单独的线程中发出请求,然后在RequestListener方法中回发到UI线程,即
facebookrunner.request("me", new RequestListener() {
@Override
public void onComplete(String response, Object state) {
//We are in the UI thread now
}
//Override the other methods, all are in the UI thread
});
这就是AsyncTasks的美妙之处。请参阅AsyncTasks上的Android文档。 http://developer.android.com/reference/android/os/AsyncTask.html doInBackground在单独的线程中执行操作。 onPostExecute回发到UI线程。
AsyncTask是使用Thread和Handler构建的。线程与UI线程分开,Handler的帖子回到UI线程,也称为主Looper。