我正在创建一个Android
库,它接受来自用户的数据并完成一些后台工作。
现在,直接与客户端应用程序交互的类具有私有对象和公共静态方法,供客户端应用程序调用(我在singleton pattern
上选择静态)。它还要求客户端应用程序在第一次使用库时调用initialize()
方法。
这依赖于客户端应用程序知道首先调用哪个活动。如果他们的申请可以从许多不同的活动开始,那就会引发一个问题。
我的选择:
我接近这个错误的方式吗?什么是图书馆的优秀设计实践?
答案 0 :(得分:1)
如果认为开发人员知道将启动应用程序的活动是一个安全的假设,但如果有人决定在他们不知道的情况下使用您的库,则可以使初始化过程有点智能化。
例如,您可以在库中添加一个布尔标志,用于跟踪它是否已初始化。通过这种方式,您可以使用一些返回此值的函数。如果是真的,那么该库已经初始化,如果没有初始化它。
它似乎有点笨重,但它只需要任何潜在启动活动的onCreate()函数中的简单if语句,如果库未初始化,则初始化它。
或者也许使用户可以根据需要多次调用初始化函数,但要跟踪该布尔值。将if语句放在initialize函数中,如果已经初始化,则不执行任何操作。
通过这种方式,程序员所要做的就是放置一个
someLibrary.initialize();
在每个有问题的Activity的onCreate()方法中。一旦实际初始化,每次后续调用都不会做任何事情。
另外,在旁注中,尝试以不需要初始化方法的方式更改代码可能是值得的。初始化函数究竟做了什么?
答案 1 :(得分:0)
我认为Application class正是我所寻找的。谢谢amalBit。