jos*_*hlf 13 java singleton android shared-libraries android-context
我正在编写一个Android应用程序,它具有封装在内部库中的一些功能.但是,要使此功能起作用,库需要应用程序上下文的实例.给这个上下文库提供库的最佳方法是什么?我看到一些选项,其中没有一个吸引人:
Application并调用getApplicationContext()
Context每次获得对单例的引用时都会传递.
Com*_*are 10
给这个上下文库提供库的最佳方法是什么?
将a传递Context到您的库中需要的方法Context.这就是Android SDK所做的事情.
或者,更改库以公开对象,而不是静态方法,并让对象包含Context(提供给创建实例的构造函数或工厂方法)的实例.
让我的库类扩展Application,并调用getApplicationContext()
如果你可以调用getApplicationContext()a Context,你就可以这样做,而不需要子类Application.
这是我找到的一个解决方案,我没有测试过,但Firebase显然使用它来避免创建 init 方法:
“在应用程序启动时发生的事情是,它在系统中注册了所有 ContentProvider(调用 onCreate)。这意味着此时还没有启动任何活动,但我们可以访问(应用程序)上下文,在那里我们可以初始化我们的库使用这个上下文”
本质上,您正在使用空 ContentProvider 的 onCreate 作为 init。它是hacky,但无缝。
https://medium.com/@andretietz/auto-initialize-your-android-library-2349daf06920
| 归档时间: |
|
| 查看次数: |
8407 次 |
| 最近记录: |