如何处理facebook asyncrunner来更新UI

时间:2012-08-12 16:14:10

标签: android multithreading android-asynctask

我想在android中获取facebook用户的喜欢。我成功地使用graph api获取了喜欢的内容,但是找不到如何启用通知机制以便更新UI的方法。

public class A{
  // Holds all the facebook related information here.

    public void fetchLikes(){
      mAsyncRunner.request( "me/likes", new RequestListener() {

         @Override
         public void onComplete(String response, Object arg1) {

           //update the liked pages to database here.
         }

      }
    }

 }


public class B{

  public void afterLogin(){
    A a = new A();
    a.fetchLikes(); // Problem is after here.
    updateUI();

  }

   public void updateUI(){
    //updating UI here
   }
}

因为facebook提取是在自己的facebook async runner上完成的。我无法提供解决方案来向呼叫者发送通知。 在上面的情况下,在调用a.fetchLikes()之后,它正在更新我的本地数据库。但是在进程完成之前,updateUI()正在调用并尝试更新我的活动。

请大家,你能提供解决这个问题的方法吗?在完成这个过程后,我需要一些东西通知我。

谢谢, 维杰

1 个答案:

答案 0 :(得分:1)

看起来你想从updateUI()的{​​{1}}处理程序调用{​​{1}},(假设从UI线程调用onComplete()。我不熟悉Facebook的AsyncRunner课程。)

我会通过onComplete()接受某个界面来完成此操作,我可以从中调用AsyncRunner

fetchLikes()

然后,您可以在updateUI()中创建一个匿名内部类来呼叫public class A { public void fetchLikes(OnFetchLikesComplete callback){ mAsyncRunner.request( "me/likes", new RequestListener() { @Override public void onComplete(String response, Object arg1) { callback.onComplete(response, arg1); } } public interface OnFetchLikesComplete { void onComplete(String response, Object arg1); } }

B