使用rxjava+retrofit+rxlifecycle+mvp的一些总结

最近用了这套框架写了个软件,有兴趣的可以看下https://github.com/CY12/MyWeather.git使用rxjava+retrofit+rxlifecycle+mvp的一些总结_第1张图片
使用rxjava+retrofit+rxlifecycle+mvp的一些总结_第2张图片
使用rxjava+retrofit+rxlifecycle+mvp的一些总结_第3张图片
一、命名规范
自己的命名规范有问题,写完才注意到,项目里有的rename出问题,也就没改,下次写程序注意。
命名规范就和写作文条理清晰是一个意思,好的命名别人浏览一下就大致知道你写的是干啥的,将来自己改动也好找,节省时间精力。

  1. 包名
    小写、单词间连续无间隔,言简意赅 eg:view

  2. 类命
    大骆驼拼写法:每个词的首字母都大写 eg:BaseView
    接口:前面要加大写字母I,其实AndroidStudio里接口和普通类的图标不一样能分别出来,但是其他的地方不易阅读,所以还是加I吧 eg:IBaseView
    抽象类:加Abstract eg:AbstractBasePresenter

  3. 变量
    成员变量,以m开头 eg:private Context mContext
    静态变量,以s开头 eg:private static String sTag
    常量,全大写用下划线连接单词 eg:public static int TYPE_IMAGE=1

  4. 方法
    动词小写,名词大写 eg:init(), initView()

  5. 布局文件
    统一小写用下划线连接单词 eg:hourly_item.xml

  6. 控件命名
    activity名+控件名+具体命名 eg:main_button_button1

二、MVP模式的使用,防止内存泄漏

  • 你说吧所有代码写在一个里他能运行,为什么要分那么多包呢。我想了想大概是多人合作吧,不同的人负责不同的板块,用接口来进行规范交流。mvp模式也便于阅读理解。但是mvp不是绝对的,照搬硬套是不可取的。我这次写的时候model层写到了presenter上,因为rxjava+retrofit直接就完成了数据获取,显示数据,链式真的很清晰。
  • mvp模式就容易产生内存泄漏,原因是Presenter经常性的需要执行一些耗时操作,那么当我们在操作未完成时候关闭了Activity,会导致Presenter一直持有Activity的对象,造成Activity不能及时回收导致内存泄漏。
    所以我们在Activity销毁时解除对P层的绑定,我们在p层对v层操作时,要判断activity是否销毁。

    protected void onDestroy(){
        super.onDestroy ();
        if (presenter!=null){
            presenter.detachView ();//在activity销毁时调用
        }
    }
	
	  if(getView ()!=null){
                getView.init()			//view不为空时进行对activity操作             
     }

三、rxjava+retrofit
这个网上很全,操作符很好用,这里我就不多讲了,推荐Carson_Ho的Rxjava使用https://blog.csdn.net/carson_ho/column/info/17714

四、behavior
behavior主要是collapsingtoolbar通过移动过程中获取Y的值和总Height的比值确定各个控件的变换。
使用rxjava+retrofit+rxlifecycle+mvp的一些总结_第4张图片
我是通过初始化getBottom作为Height,折叠过程中getBottom不断缩小,将动态的getBottom和初始Height比值作为我们控件的渐变操作,显示隐藏等 。不知道为什么getBottom会出现负值…

自学android第一行代码照着一步一步敲了个coolweather,然后看到新的框架就查了很多,在网上找的资料
参考的mvp框架
https://blog.csdn.net/qq_37173653/article/details/78924010
behavior
https://www.jianshu.com/p/d83b5e870ac3
android学习指南
https://blog.csdn.net/carson_ho/article/details/89838873

你可能感兴趣的:(android)