2010-05-14 80 views
2

此問題與existing question問題有關。我雖然會問一個新問題,而不是回答其他問題。Android多處理程序設計

「我在活動中有多個處理程序。」爲什麼?如果您不想使用複雜的handleMessage()方法,則可以使用post()(在HandlerView上)將邏輯分成單獨的Runnables。多個Handlers讓我感到緊張。 - CommonsWare

我是Android新手。我的問題是 - 在單個活動中有多個處理程序是不好的設計?

這是我目前實施的草圖。

我有一個mapActivity,它創建一個數據線程(一個偵聽數據的UDP套接字)。我的第一個處理程序負責將數據從數據線程發送到活動。

在地圖上,我有一堆經常使用refreshed的「動態」標記。這些標記中的一些是視頻標記,即如果用戶點擊視頻標記,我添加將android.opengl.GLSurfaceView擴展到我的地圖活動並在這個新視頻上顯示視頻的ViewView。我使用我的第二個處理程序來發送關於用戶在ItemizedOverlayonTap(int index)方法上點擊的標記的信息。

用戶可以通過點擊視頻視圖來關閉視頻視圖。我爲此使用了我的第三個處理程序。

如果人們可以告訴我這種方法有什麼問題並提出更好的實現方法,我將不勝感激。

謝謝。

回答

3

正如我在我以前的評論中寫的,我不會爲此使用多個Handler對象。

對於UDP套接字線程,您可以與您現有的Handler棒,或使用post()MapViewRunnable張貼到主應用程序線程,或在您MapActivity使用runOnUiThread()

對於您的「第二個發送有關用戶在ItemizedOverlay onTap(int index)方法上點擊的標記信息的處理程序」,將在主應用程序線程上調用onTap(),因此您不需要使用Handler。第三個Handler也是如此。

+0

但是......除了這是一個糟糕的設計,如果你有多個處理程序會發生什麼?他們都收到所有的消息,只有第一次宣佈,只有第二次?我猜都可以,但如果你能給我一個答案而不需要我編碼,我會很高興! – 2013-07-21 13:35:34

+1

@ type-a1pha:以上都不是。部分用於發送「消息」的協議指示哪個「處理程序」將成爲消息的接收者。因此,不管Handler的哪個對象可能未完成,哪個Handler都能得到這個消息。 – CommonsWare 2013-07-21 14:11:46

+0

是的,對我來說是恥辱! – 2013-07-21 14:32:09