Android Facebook RequestListener

时间:2012-06-09 04:25:12

标签: java android facebook-graph-api

我是Java新手,但多年来一直是.NET开发人员,我对RequestListener对象的一点点感到困惑,因为我无法在UI线程上检索异步调用的结果我可以告诉你。我的研究告诉我,我不应该使用单例或应用程序上下文对象来获取和存储数据。我可以使用sqlLite,但我需要的数据太短暂而无法理解。我想知道如何让asyncfacebookrunner对象报告它对UI线程的响应,这样我就可以继续在我自己的api和从我在异步调用中进行的facebook调用返回给我的对象之间做出决定。

我错过了什么吗?我似乎无法找到一种方法来获取数据。我可以通过Bundle,但我不太清楚如何获取数据。我想我会传递一个Intent对象来检索,但我没有看到它。我认为此时我的眼睛因睡眠不足而交叉。这里有什么帮助吗?

1 个答案:

答案 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。