Android Java:所有活动的覆盖中的公共代码的最佳实践

时间:2013-05-21 15:07:32

标签: java android android-activity extend

我不完全确定以下方法是好还是坏。 如果有经验的人可以增加他/她的2美分,那就太好了。)

我有一个包含大量活动的应用。 在这种情况下,所有这些都必须能够使用LocalBroadcastManager从动态注册的接收器(在onCreate / Resume / Pause ....中)接收消息,并运行AsnycTask来完成一些工作并显示ProgressDialog。 所需的代码(Receiver和AsnycTask)对于所有活动都是完全相同的。

可以随时通过其中一项服务发送消息。

为此,我创建了一个实现所有这些的Activity(在oncreate / pause / resume et.c.中注册和取消注册接收器并包含此AsyncTask)

所有其他活动都应扩展此Activity,因此我不需要担心将额外的代码放入所有各自的onCreate / onResume / onPause方法中以调用任何帮助程序类/方法(并且忘记这样做)。

这种方法可以吗? 我问,因为我偶然发现了一个关于从自定义类中扩展活动的类似问题(遗憾的是我再也找不到了),并且一个答案表明它会导致大量内存泄漏而不解释原因。

非常感谢!

2 个答案:

答案 0 :(得分:2)

我使用BaseActivity类取得了很大的成功,我的项目中的所有其他活动都是从这个类扩展而来的。由于这个原因,我还没有遇到任何内存问题。

另一种方法是将您的常用功能放在Interfaces中,然后让您的Activities根据需要实现这些功能。这里有两个非常好的讨论这两种方法的优点:Interface vs Base class

答案 1 :(得分:2)

添加我的2cents,我同意MattDavis,我总是设置一个“BaseActivity”,我发现它非常有用。

覆盖onCreate没有任何问题,但是还有一些额外的选项。

  1. 在BaseActivity中,您可以在“onCreate stuff”之前和之后设置一个方法,但仍然在onCreate方法中。在我的,我使用“PreUILoad()”和“PostUILoad”。然后我可以覆盖这些方法,在我的默认onCreate之前或之后添加任何内容,而不必搞砸onCreate。

  2. 更好的解决方案是实现这个让100倍更轻松的库。我只需设置我的“BaseForm”(表单扩展活动)来获取我的项目,然后其他所有内容都扩展到BaseForm。在所有其他表单中,我甚至不需要触及onCreate,只需要“定义”方法,它可以设置所有内容,而且我永远不必担心搞乱onCreate。信息在这里:

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

    希望这有帮助。