我是Java的新手,我正在移植我們的Windows Phone 7庫以在Android上運行。由於語法上的相似性,迄今爲止這非常簡單。我們的庫基本上是一個抽象的HTTP消息隊列,它在移動平臺上提供數據持久性和完整性。它只提供了一種設計選擇的異步方法。在WP7上,當處理異步消息並收到服務器響應時,我使用委託來調用用戶提供的回調。我應該在Android開發中使用偵聽器接口還是事件回調處理程序?
爲了在Android上實現同樣的功能,我發現了兩種方法 - 一個簡單的Java偵聽器接口,其中包含用戶必須實現的OnSuccess和OnFailure方法,或者使用在線程之間提供消息隊列的Android處理程序類(http://developer.android.com/reference/android/os/Handler.html)。
在這個階段,我已經和Handler一起走了,好像我誠實地說它是最類似於C#的代表。對於我們圖書館的用戶來說,實施起來似乎也很少。一些用戶的代碼示例使用我們的圖書館:
connection.GetMessage("http://somerestservice.com", GetCallback);
Handler GetCallback = new Handler() {
public void handleMessage(Message message){
CustomMessageClass customMessage = (CustomMessageClass)message.obj;
if(customMessage.status == Status.Delivered) {
// Process message here,
// it contains various information about the transaction
// as well as a tag that can contain a user object etc.
// It also contains the servers response as a string and as a byte array.
}
}
};
使用此用戶可以創建許多不同的處理程序,因爲他們想,叫什麼,他們希望,在將它們作爲方法的參數。非常類似於代表...
我想知道是否應該轉移到監聽器接口的原因是因爲我獲得的Java越多,看起來就越是如此,它就是如何使用第三方我們的圖書館會期待它完成。
它本質上是相同的過程,除了每次你想做與服務器響應不同的東西,例如你可能會從不同的端點獲取不同類型的數據,你將不得不創建一個自定義的類來實現我們的每次接口,以及實現我們的接口的任何方法。或者當然你可以有一個單一的類,所有的服務器響應都集中在一起,但試圖弄清楚如何處理每個單獨的響應...
我可能有點偏頗,因爲來自C#但是聽衆似乎有些複雜,我更喜歡處理程序的執行,任何Java開發人員都有任何想法/建議嗎?這將非常感激。
乾杯!
我是新來的Java和Android我自己,所以我沒有資格完全回答,但我的理解是,偵聽器和處理程序的定義有點模糊,特別是在跨平臺。在Android開發人員指南的[UI事件部分](http://developer.android.com/guide/topics/ui/ui-events.html)中,他們將偵聽器描述爲綁定到您的特定事件的對象視圖。您在外部執行此操作時無需擴展視圖對象。而它們將處理程序描述爲View類的標準方法,您在擴展它時會覆蓋它。 – aptwebapps 2010-11-16 03:24:44