1

我正在尝试在 android 中获取 facebook 用户的喜欢。我成功地使用图形 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 异步运行器上完成的。我无法制定解决方案来将通知发送回呼叫者。在上述情况下,调用 a.fetchLikes() 后,它正在更新我的本地数据库。但在该过程完成之前 updateUI() 被调用并尝试更新我的活动。

请问各位大神,能不能提供一个解决这个问题的方法。流程完成后,我需要一些东西来通知我。

谢谢,维杰

4

1 回答 1

1

看起来你想updateUI()从 的onComplete()处理程序中调用AsyncRunner,(假设onComplete()是从 UI 线程调用的。我不熟悉 Facebook 的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来调用updateUI().

public class B {
    public void afterLogin(){
        A a = new A();
        a.fetchLikes(new A.OnFetchLikesComplete() {
            public void onComplete(String response, Object arg1) {
                updateUI();
            }
        });
    }

    public void updateUI(){
        //updating UI here
    }
}
于 2012-08-12T16:37:00.363 回答