监视库中的android生命周期事件

时间:2017-04-05 22:06:32

标签: android

我对编程世界一般都是新手,所以我希望这不是一个明显/抽象的问题。

我正在开发一个需要监控使用它的活动的生命周期事件的android库。如何使用我的库为开发人员创建最少的工作量来实现这一目标?最好是,我喜欢使用内置于Android中的内容。

我看过类似的问题,例如:Automatically log Android lifecycle events using ActivityLifecycleCallbacks? 但它并不真正适用于图书馆项目。

我错过了什么吗?任何见解将不胜感激。

1 个答案:

答案 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

相关问题