0

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

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

4

1 回答 1

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 构建的。Thread 与 UI 线程是分开的,Handler 的 post 回到 UI Thread 中,也称为 Main Looper。

于 2012-06-09T04:35:21.827 回答