我对编程世界一般都是新手,所以我希望这不是一个明显/抽象的问题。
我正在开发一个需要监控使用它的活动的生命周期事件的android库。如何使用我的库为开发人员创建最少的工作量来实现这一目标?最好是,我喜欢使用内置于Android中的内容。
我看过类似的问题,例如:Automatically log Android lifecycle events using ActivityLifecycleCallbacks? 但它并不真正适用于图书馆项目。
我错过了什么吗?任何见解将不胜感激。
答案 0 :(得分:0)
我认为您最好的(长期)选项是设置库以及库的集成(即在库的入口点传递Application
)。
也就是说,有一种无证的方式来获取当前的Application
。如下所述:https://stackoverflow.com/a/12495865/458365
try {
final Class<?> activityThreadClass =
Class.forName("android.app.ActivityThread");
final Method method =
activityThreadClass.getMethod("currentApplication");
return (Application) method.invoke(null, (Object[]) null);
} catch (final Exception e) {
// handle exception
}
完成后,您可以致电Application.registerActivityLifecycleCallbacks()
注册自己的ActivityLifecycleCallbacks
<强>更新强> 获取我遇到的应用程序(上下文)的另一种方法是使用内容提供程序。我认为像Firebase这样的库使用这种方法,因为它没有设置。但是,它需要库的使用者拥有一个应用程序对象(实际上与手动方法相同)但它确实看起来更清洁:
在CP的onCreate
内,我们可以将getContext
转换为Application
,并使用Callbacks
进程从那里开始。
来源:https://medium.com/@andretietz/auto-initialize-your-android-library-2349daf06920