Android的Lifecycle

使用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方法,系统吊起时不知道参数类别,所以不允许去设置参数;

posted @   帅气好男人_jack  阅读(7)  评论(0编辑  收藏  举报  
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示