Android的Lifecycle

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jackzhouyu/article/details/88089031

使用Lifecycle功能失败,Activity的getLifecycle().addObserver(presenter)

问题描述

使用api 28的sdk Lifecycle功能,presenter对象继承了LifecycleObserver,但是始终提示这个Activity不是一个LifecycleOwner? 明明就是啊,进入源码也能找到Activity继承了这个接口,查找了很多资料也不行,怀疑是环境问题、手机问题,各种尝试,最后使用相同的环境,写了一个测试LifecycleObserver竟然发现没有问题,不报错了;仔细一对比,原来是在LifecycleObserver的自定义类中,定义了一个方法,如下:

错误的observer的方法

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
@Override
public void onAttach(View view) {
    LogHelper.de_i("BasePresenter onCreate");
}

正确的observer的方法

@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
@Override
public void onAttach() {
    LogHelper.de_i("BasePresenter onCreate");
}

发现不同没

参数问题,正确的observer默认调取的方法是没有参数的,而错误的却是有参数;据官方资料被调用的方法参数要不为空要不就是LifecycleOwner;由于工作时间紧张没有来得及去分析原理为什么,我觉得背后应该是用了代理或者放射去调用我们的observer方法,系统吊起时不知道参数类别,所以不允许去设置参数;

猜你喜欢

转载自blog.csdn.net/jackzhouyu/article/details/88089031