1

我正在编写一些库代码,作为jar文件分发,开发人员在使用前需要使用应用程序ID进行初始化。初始化仅仅是一个函数调用,就像Android中的全局初始化

MyLibrary.initialize("16ea53b"); 

棘手的是,我不知道如何指导开发人员,使这个初始化调用。起初,我认为主要活动中的一个静态初始化块将是最简单的方法。问题是用户可以通过其他活动或意图进入应用程序,并且主要活动不会被加载。是否有一种通用的方法来确保在应用程序启动时运行一行代码,而不管应用程序的启动方式如何?

初始化调用是幂等的,所以我可以告诉人们在它可以使用的每个地方进行初始化调用,但那会很麻烦。

回答

0

一个简单的方法是在库代码初始化时将某些内容保存在SharedPrefences中。然后,无论您认为重要的地方,您都可以检查该值,如果存在或继续进行初始化或任何其他操作(错误消息等),请继续。这也可以让你的开发人员不必多次初始化。

务必向开发人员提供一个API来重置此值。

此外,here是一个很好的API设计,可以帮助你,由约书亚布洛赫谈。

+0

我想我如何让我的库访问SharedPreferences具有相同的问题 - 我需要让开发人员使用有效的上下文初始化库以便访问SharedPreferences。还是有另一种方法来访问应用程序对象?顺便说一句,这是一个很棒的演讲。 – lacker

+0

根据Android的指导原则,我们可以从Application类中继承子类,从而使用它来存储/维护全局数据或使用静态单例类。我个人使用过Application对象。所以是的,您的开发人员使用有效的Context初始化库的方法是有道理的。我想知道更多关于这方面的其他机制。 – omermuhammed

+0

我仍然有同样的问题 - 开发人员在哪里使用上下文初始化库?他们必须从每个可能开始申请的班级开始。 – lacker

0

这听起来像一个问题,可以通过扩展创建一个扩展Application并将其放在那里的类来解决,这对整个Application来说是全局的。

+0

对于一个单独的应用程序,这是有道理的。对于图书馆开发人员,我宁愿不向每个用户解释如何继承应用程序。 – lacker