总结

2020-08-08  本文已影响0人  小赵不在
  1. 开屏页:引导用户和停留几秒是为了做初始化工作

  2. 为什么在开屏页或者引导页把用户信息获取出来?
    因为进入主页的时候就要显示用户的头像或者名称(与用户相关的信息)

  3. 如果没有引导页,那进入主页后加载信息的时间就会变长

  4. 如果启动页完成之后进入主页,信息没有出来,用不用断开网络请求?
    如果不终止,把页面关了以后,还会获取用户信息,然后存在本地
    按返回键来控制断不断请求,如果按了就说明要断开请求,退出应用
    监听一下按返回键就是断开请求了,没按就是没断
    不能用自动解绑的方式,因为自动解绑不会区分你是怎么关闭的

只能拿到disposable对象,想办法从P层里拿到disposable对象,提供一个get方法

  1. 开屏页存在也是一种赚钱的方式:广告(广告会提前缓存好)

  2. 版本升级:如果读取出来的版本号和当前的版本一样就不升级,如果不一样就升级,再弹一次引导页
    区分出来是第一次还是升级还是清缓存了

有的要求再启动页要弹一个popwindow
popwindow不能按返回键关闭
pop的穿透事件(pop不能是全屏的) 要想让那个它不穿透,pop设置全屏,给ContentView里边设置白色背景。通过给window设置透明度来实现穿透效果
实现pop半透明:①让pop全屏 ②给他设置其他颜色
pop弹一个用户协议:同意——>进行下一步 (下次启动就不是第一次启动了,就不会弹了,直接出来引导页) 不同意——>终止(下次启动还会弹)

在Model层判断一下lifecycleProvider不等于空的情况下,就代表了可以把请求取消掉,如果是空,就代表不取消。使用lifecycleProvider会绑定生命周期,会有ActivityEnvent.destroy方法

启动页容易黑屏白屏,设个背景

为什么要把Rxjava解绑?一因为内存泄漏,二是减少不必要的网络请求
为什么会内存泄漏:因为V层对P层的引用,P层对V层的订阅Rxjava还有存留,内存就会一直泄露着
网络请求取消不了:一在自己解绑的时候拿到model层传来的disposiable对象,用disposable进行dispose操作,二是多个网络请求的时候,直接从容器里移除,没有移除的就是剩下没有回来的,进行取消操作。写一个ArrayList,每次请求一个,就把disposiable对象放在ArrayList里,然后请求回来了,就从ArrayList里移除,检查还有多少没有回来的,没有回来的直接dispose掉。第二种方案使用lifecycle第三方的工具,方便,能自动解绑,只需要自己的act或fragment继承他的RxFragment,Rx有一个compose操作符,把act或fragment传过去,能够指定一个生命周期

上一篇下一篇

猜你喜欢

热点阅读