如何设计可以从Android应用程序中的所有活动访问的库?

时间:2013-06-20 14:30:31

标签: android design-patterns android-activity android-library

我正在创建一个Android库,它接受来自用户的数据并完成一些后台工作。

现在,直接与客户端应用程序交互的类具有私有对象和公共静态方法,供客户端应用程序调用(我在singleton pattern上选择静态)。它还要求客户端应用程序在第一次使用库时调用initialize()方法。

这依赖于客户端应用程序知道首先调用哪个活动。如果他们的申请可以从许多不同的活动开始,那就会引发一个问题。

我的选择:

  1. 强制用户在每个活动中初始化,并在内部维护库是否已初始化。
  2. 遵循不同的设计模式。
  3. 我接近这个错误的方式吗?什么是图书馆的优秀设计实践?

2 个答案:

答案 0 :(得分:1)

如果认为开发人员知道将启动应用程序的活动是一个安全的假设,但如果有人决定在他们不知道的情况下使用您的库,则可以使初始化过程有点智能化。

例如,您可以在库中添加一个布尔标志,用于跟踪它是否已初始化。通过这种方式,您可以使用一些返回此值的函数。如果是真的,那么该库已经初始化,如果没有初始化它。

它似乎有点笨重,但它只需要任何潜在启动活动的onCreate()函数中的简单if语句,如果库未初始化,则初始化它。

或者也许使用户可以根据需要多次调用初始化函数,但要跟踪该布尔值。将if语句放在initialize函数中,如果已经初始化,则不执行任何操作。

通过这种方式,程序员所要做的就是放置一个

someLibrary.initialize();

在每个有问题的Activity的onCreate()方法中。一旦实际初始化,每次后续调用都不会做任何事情。

另外,在旁注中,尝试以不需要初始化方法的方式更改代码可能是值得的。初始化函数究竟做了什么?

答案 1 :(得分:0)

我认为Application class正是我所寻找的。谢谢amalBit。