2012-08-12 56 views
1

我想获取facebook用户喜欢的android。我成功地使用图形API获取喜欢,但无法找到如何启用通知机制,以便它更新用户界面。如何处理Facebook的asyncrunner更新用户界面

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异步runner.I做不能让一个解决方案发送通知返回给调用者。 在上述情况下,调用a.fetchLikes()后,它正在更新我的本地数据库。但是在该过程完成之前,updateUI()正在被调用并尝试更新我的活动。

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

感谢, 维杰

回答

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 
    } 
} 
+0

美丽的解决方案。感谢那。有效。你救了我的一天! – vijaykumarg 2012-08-13 05:05:06