目录:
1.建议
2.知识点
3.Dagger2使用篇
4.Retrofit+RxJava+OkHttp -封装篇
建议:
(1).使用Gradle和它推荐的工程
(2).密码和敏感数据最好放在gradle.properties中
(3).不要自己写Http客户端,使用Volley或者OkHttp库
(4).使用Fragments来呈现ui视图
(5).使用Activities只是为了来管理Fragments
(6).Layout布局是xmls代码,需要组织好
(7).在layout的xmls布局是,使用styles文件来避免写重复的属性
(8).要使用多个style文件,避免出现单一的大的style文件
(9).保持colors.xml简短,只是定义调色板
(10).不做一个深层次的ViewGroup
(11).只是用WebView的时候避免在客户端做处理,当心内存泄漏
(12).使用Robolectric单元测试,Robotium做ui测试
(13).使用Genymotion作为模拟器
(14).用ProGuard和DexGuard来混淆项目
android SDK
Android sdk 放在home目录或者其他app无关的位置,因为在安卓有些包含SDK的IDE的时候,可能火把SDK放在IDE同一目录下,当年你需要升级或者重新安装的时候,会比较麻烦。如果IDE是普通用户下运行,而不是在root下运行,还需要避免吧SDK放到需要studo权限的系统级别目录下。
Gradle配置
不要在build.gradle中定义sigingConfigs,因为会出现在版本控制中,重新建立一个不加人版本控制系统的gradle.properties文件
使用Maven依赖方式替代使用jar包方案如果项目中明确使用jar文件,那么为了避免成为固定版本,下载jar包来更新很繁琐,可以定义成Maven形式。然后会自动升级到指定的最新版本
Activities and Fragments
实现ui界面的时候,Fragments应该作为默认选择。可以重复使用Fragements用户接口来组合成你的应用,强烈推荐使用Fragments而不是activity来呈现ui界面:
(1)使用多窗格布局解决方案:Fragments的引入主要将手机应用内引申到平板电脑,所以在平板上面可能有A,B两个窗格,但是在手机应用上A.B可能分别充满整个屏幕。所以在起初就用fragments的话,会方便以后的屏幕适配。
(2)屏幕间数据通信:从一个Activity发送复杂数据(例如Java对象)到另外一个Activity,Android的API并没有提供合适的方法。不过使用Fragment,你可以使用 一个activity实例作为这个activity子fragments的通信通道。即使这样比Activity与Activity间的通信好,你也想考虑使用Event Bus架构,使用如 Otto 或者 greenrobot EventBus作为更简洁的实现。 如果你希望避免添加另外一个类库,RxJava同样可以实现一个Event Bus。
(3)Fragments 一般通用的不只有UI:你可以有一个没有界面的fragment作为Activity提供后台工作。 进一步你可以使用这个特性来创建一个fragment 包含改变其它fragment的逻辑 而不是把这个逻辑放在activity中。
(4)ActionBar可以使用内部fragment来管理:你可以选择使用一个没有UI界面的fragment来专门管理ActionBar,或者你可以选择使用在每个Fragment中 添加它自己的action 来作为父Activity的ActionBar.
但是也不能滥用嵌套的fragments,因为可能会引起 matryoshka bugs。在架构一个app框架的时候,应该有一个顶级的activity来包含绝大部分业务相关的fragment。也可以有一些辅助的activity,辅助activity通信可以很简单限制在这两种方法 Intent.setData() 或 Intent.setAction()或类似的方法。
资源文件 Resources
命名 :遵循前缀表面类型的习惯,例如type_foor_bar.xml
组织布局文件:
每一个属性一行,缩进四个空格
android:id作为第一个属性
android:layout_ 属性在上边
style 属性在底部
应该使用styles几乎每个项目都需要适当的使用style文件,因为对于一个视图来说有一个重复的外观是很常见的。
可以将一个大的style文件分割成多个文件 可以有多个styles.xml文件,Android SDK支持其他文件,style这个文件名称并没有起作用,起作用的在文件里的