2012-08-12 20 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