2013-05-21 19 views
3

最佳實踐我不是很確定以下做法是否是一個好的或可怕的一個。 這將是巨大的,如果更有經驗的人可能會增加他/她的2美分:)的Android的Java:常見的代碼覆蓋所有活動

我有很多活動的應用程序。 在這種情況下它們都必須能夠從一個動態註冊接收機接收消息使用LocalBroadcastManager(在的onCreate /恢復/暫停....)和運行AsnycTask做一些工作並顯示ProgressDialog。 所需的代碼(Receiver和AsnycTask)對於所有活動都是完全相同的。

消息可以在任何時候通過的一項服務來發送。

要做到這一點我創建了實現所有(寄存器和註銷在OnCreate中/暫停/恢復et.c.接收器和包含此的AsyncTask)

其他一切活動應擴大這個活動讓我不要一個活動不需要擔心將額外的代碼放入他們各自的onCreate/onResume/onPause方法來調用任何助手類/方法(並忘記這麼做)。

是這種方法好不好? 我問,因爲我從前有關從自定義類擴展活動類似的問題跌跌撞撞(很遺憾我不能再找到它)和一個回答表明,這將導致大量的內存泄漏沒有地名釋義原因。

非常感謝!

+0

從查看Java的點是好的。可選,使基類抽象。 – PeterMmm

回答

1

我已經使用BaseActivity類,在我的項目中的所有其他活動,從延長了很多成功的。由於這個,我還沒有遇到任何內存問題。

另一種方法是將投入接口您共同功能,那麼有這些必要的活動實施。這裏有兩種方法的優點的一些很好的討論:Interface vs Base class

+0

謝謝你的回答!聽說沒關係,我感到寬慰:)是的,我使用了接口和Base類。 – mx82

1

添加我的2分錢小費,我MattDavis同意,我總是設置一個「BaseActivity」我覺得這是非常有用的。

有什麼不妥覆蓋的onCreate,但也有一些額外的選項。

  1. 在你BaseActivity,你之前和你的「的onCreate的東西」,但仍是onCreate方法中設置後的方法。在我的,我使用「PreUILoad()」和「PostUILoad」。然後我可以重寫這些方法來在我的默認onCreate之前或之後添加任何東西,而不必擰上onCreate。

  2. 一個更好的解決方案是實現這個庫,這使得事情100時報容易。我只是設置我的「BaseForm」(表單擴展活動)來讓我的項目,然後一切擴展BaseForm。在所有其他形式的,我甚至都不需要觸摸的onCreate,只是「定義」方法,它完成所有設置,就再也不用擔心用的onCreate搞亂。信息是在這裏:

https://code.google.com/p/alternate-java-bridge-library/

希望這是有幫助的。

+0

非常感謝您的洞察力和鏈接。對不起,我不能將兩個答覆都標記爲答案,所以我選擇了第一個答案。 – mx82