首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lifewinner
V2EX  ›  Android

MVP 中 view 为空的原因是什么?

  •  
  •   lifewinner · 58 天前 via Android · 1373 次点击
    这是一个创建于 58 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有异步调用中 view,可能会出现为空的情况。这是由什么原因导致的呢?我在网上,看到的资料,有说过在内存不足的情况下,系统不会只针对单个 activity 进行回收,而是会对整个进程进行回收,这样的情况产生的话,那就是整个程序进行崩溃,而只不是一个 activity 为空,所以导致 activity 为空的原因到底是什么?
    11 回复  |  直到 2019-11-29 15:00:52 +08:00
    lifewinner
        1
    lifewinner   58 天前 via Android
    想了好久都没想明白
    WenhaoWu
        2
    WenhaoWu   58 天前 via Android
    不要把 Activity 和 Fragment 直接传进 Presenter,把 View 抽象成 Interface 然后 Activity implement 它。
    WenhaoWu
        3
    WenhaoWu   58 天前 via Android
    可以看看我写的小 Demo github.com/WenhaoWu/PexelsPhoto
    ytempest
        4
    ytempest   58 天前 via Android
    P 层发起一个延时请求,在请求未完成前,activity 被回收,导致 V 为空,我好像也遇到过
    ChenFanlin
        5
    ChenFanlin   58 天前
    "在内存不足的情况下,系统不会只针对单个 activity 进行回收,而是会对整个进程进行回收"
    这句话如果当你的 app 在前台的时候这就不成立了呀, 可以试试 开启不保留活动+P 层发起一个延时请求 会不会重现
    frantic
        6
    frantic   57 天前
    异步调用的话,如果你当前的 Activity 被销毁了,但是异步里面还调用了此 View 就会出现这个问题,需要对生命周期管理
    lifewinner
        7
    lifewinner   57 天前 via Android
    @ChenFanlin 就是前台进程啊,为什么不成立呢
    lifewinner
        8
    lifewinner   57 天前 via Android
    @frantic view 为什么会被销毁,原因是什么
    wobuhuicode
        9
    wobuhuicode   57 天前
    感觉安卓的 MVP 就是个绕圈子的玩意。
    ChenFanlin
        10
    ChenFanlin   57 天前
    @lifewinner #7
    https://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/index.html
    回收的条件是:
    1.必须是非 persistent 进程,即非系统进程;
    2.必须是空进程,即进程中没有任何 activity 存在。
    3.必须无 broadcast receiver。运行 broadcast receiver 一般都在等待一个事件的发生,用户并不希望此类程序被系统强制关闭;
    4.进程中 service 的数量必须为 0

    更常见的 P 层中 view == null 的原因 : P 不应该都有 attachView, detachView 这俩方法嘛? 为了不内存泄露, 一般 detachView 在 Activity 的 onDestroy 调用, 把 P 中的 view 置空
    pyfan
        11
    pyfan   57 天前
    github 上传个文件 发链接,或者 Stack Overflow 发个链接,我们瞅瞅
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1786 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:33 · PVG 10:33 · LAX 18:33 · JFK 21:33
    ♥ Do have faith in what you're doing.