跟踪Fragment的生命周期,就像Application.ActivityLifecycleCallbacks一样

4
每个人都知道,在Android中,我们可以通过Application.ActivityLifecycleCallbacks跟踪Activity,以获取系统的触发事件,例如Activity创建、停止、销毁等。
我在stackoverflow上只找到了一个与此主题相关的问题。 Hooking into fragment's lifecycle like Application.ActivityLifecycleCallbacks 不幸的是,提供的解决方案仅适用于post 25.2.0 Android版本。 我正在寻找pre 25.2.0的解决方案。也许可以通过一些变通方法实现,比如反射?

您可以在此处跟踪支持库的更改(https://developer.android.com/topic/libraries/support-library/revisions.html)。有没有特别的原因不更新? - Eugen Pechanec
1个回答

4
我正在寻找有关25.2.0之前版本的解决方案。FragmentManager.FragmentLifecycleCallbacks25.1.0开始提供。唯一的变化是在25.2.0中引入了关于此API的变化,即它变成了static,而在此之前它只是一个公共内部类。这意味着为了使用它,您必须通过其封闭实例访问它,在这种情况下是FragmentManager
final FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.registerFragmentLifecycleCallbacks(fragmentManager.new FragmentLifecycleCallbacks() {
            @Override
            public void onFragmentPreAttached(FragmentManager fm, Fragment f, Context context) {
                super.onFragmentPreAttached(fm, f, context);
            }
            ...
            // all other callbacks
        }, true);

Eugen Pechanec的评论中所述,在Android-O版本中, 默认框架片段(即android.app.Fragment,而不是来自支持包) 将接收这些更改


1
为了完整性,同样的功能对于平台片段将在Android O中提供。 - Eugen Pechanec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接