1
lifewinner OP 想了好久都没想明白
|
2
WenhaoWu 2019-11-28 21:53:23 +08:00 via Android
不要把 Activity 和 Fragment 直接传进 Presenter,把 View 抽象成 Interface 然后 Activity implement 它。
|
3
WenhaoWu 2019-11-28 21:54:39 +08:00 via Android
可以看看我写的小 Demo github.com/WenhaoWu/PexelsPhoto
|
4
ytempest 2019-11-29 09:55:40 +08:00 via Android
P 层发起一个延时请求,在请求未完成前,activity 被回收,导致 V 为空,我好像也遇到过
|
5
ChenFanlin 2019-11-29 10:13:27 +08:00
"在内存不足的情况下,系统不会只针对单个 activity 进行回收,而是会对整个进程进行回收"
这句话如果当你的 app 在前台的时候这就不成立了呀, 可以试试 开启不保留活动+P 层发起一个延时请求 会不会重现 |
6
frantic 2019-11-29 10:36:42 +08:00
异步调用的话,如果你当前的 Activity 被销毁了,但是异步里面还调用了此 View 就会出现这个问题,需要对生命周期管理
|
7
lifewinner OP @ChenFanlin 就是前台进程啊,为什么不成立呢
|
8
lifewinner OP @frantic view 为什么会被销毁,原因是什么
|
9
wobuhuicode 2019-11-29 11:56:16 +08:00
感觉安卓的 MVP 就是个绕圈子的玩意。
|
10
ChenFanlin 2019-11-29 12:12:24 +08:00
@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 置空 |
11
pyfan 2019-11-29 15:00:52 +08:00
github 上传个文件 发链接,或者 Stack Overflow 发个链接,我们瞅瞅
|