一.git、svn
1)冲突怎么解决?
答:在开发的时候,冲突一般分为两种,上传冲突 与 合并冲突,
合并冲突的解决:
1.选中项目->右键->Git->Resolve Conflicts
2.会出现一个弹窗,显示了冲突的文件,选择某个文件后,点击Merge
3.然后,会出现三个代码框
a、左边的Local Changes代表”当前“分支上的修改;
b、右边的Changes from Server代表“合并进来”的分支上的修改;
c、中间的Result代表经过处理后的最终内容;
4.左上角有一排按钮,分别介绍一下作用
上下箭头:跳转到上/下一个不同;
这三个从左往右依次代表:比较左边和中间的内容,比较中间和右边的内容,比较左边和右边内容;
这三个从左往右依次代表:接受两边没有冲突的改变,接受左边没有冲突的改变,接受右边没有冲突的改变
现在回头看内容区域,会看到四种颜色
红色区域:代表当前分支和合并分支都编辑过的内容,属于冲突;
蓝色区域:代表被单方面编辑过的内容,属于改变;
灰色区域:代表被删除的内容,属于改变;
绿色区域:代表新增的内容,属于改变;
真正需要解决的冲突只有红色区域,其他高亮区域只是为了让我们再次确认改变的内容是否合理,如果对自己的代码有信心,那就不用管那些区域了,就按照c步骤的方法提交 你可以按照自己的需求接受改变的代码,通常可以直接接受两边没有冲突的改变:
如果不记得自己的修改是什么,就可以关闭该工具,通过查找历史提交,比对历史代码来确认正确的代码;有的时候由于代码格式化的原因,你并没有改变代码的内容,但是格式化增加了一些空格,那么也会产生冲突,
2)分支怎么创建?
1.首先进入本地git仓库目录下,打开git bash环境
2.使用git branch命令可以查看到当前目录下的分支
3.使用git branch 分支名称创建分支,创建完成后通过git branch可以看到本地已经多出了一个新建的分支
4.使用git push origin 分支名 命令将本地的修改推送到远程服务器上
5.push完成后你可以在远程服务上看到了新建的分支
3)你用分支干什么了?
主要用于开发的时候,我们要在项目中添加一个功能,但是一般都不会在主项目上修改,所以,这个时候就要拉一个分支出来,在分支上面添加代码,保证主线程代码的完整可用性;还有就是 在分支上进行代码的开发测试,不影响团队的项目;还有就是,可用合并不同的软件仓库
4)合并分支
答:先切换到一个分支 然后git merge 另一个分支名
2.gradle配置签名文件
答:在Android Studio中是使用Gradle进行项目打包的,所有我们就从这里入手,
配置其打包的方式,让其在debug的时候也运行release签名。
1.首先在module级别的build.gradle下,找到android节点。加入配置签名的代码
2.配置完你的证书信息之后,找到buildTypes节点,指定对于的打包签名方式
3.接下来打开Android Studio右侧Gradle菜单,找到assembleRelease,点击运行正式签名打包,
如果没有问题就可以run起来了。测试一下,发现在android studio直接运行也能调起微信支付等需要正式签名的功能了
3.性能优化:内存优化、布局、电量、流量、启动
一、布局优化:
Android 系统每隔 16ms 发出 VSYNC 信号触发对UI进行渲染,那么就要求每一帧都要在 16ms 内绘制完成(包括发送给 GPU 和 CPU 绘制到缓冲区的命令,这样就能够达到流畅的画面所需要的60fps 所以我们要在16s内做完所有的操作,而造成丢帧的原因有:
1.layout 太过复杂,层次过多
2.UI 上有层叠太多的绘制单元,过度绘制
3.CPU 或者 GPU 负载过重
4.动画执行的次数过多
5.频繁 GC,主要是内存抖动
6.UI 线程执行耗时操作
解决方法:1.layout 太过复杂,层次过多
(1).避免复杂的 View 层级
(2).避免 layout 顶层使用 RelativeLayout
(3).布局层次相同的情况下,使用 LinearLayout
(4).复杂布局建议采用 RelativeLayout 而不是多层次的 LinearLayout
(5).<include/> 标签复用
(6).<merge/> 标签减少嵌套
(7).尽量避免 layout_weight
(8).视图按需加载或者使用 ViewStub
2.UI 上有层叠太多的绘制单元,过度绘制
(1).去除重复或者不必要的 background
(2).点击态中的 normal 尽量设置成 transparent
(3).去除 window 中的 background(这个可以通过处理 decorView 或者设置 Theme 的方式)
(4).若是自定义控件的话,通过 canvas.clipRect() 帮助系统识别那些可见的区域
3.内存抖动
(1).大对象可以使用对象池复用,比如 byte[]
(2).尽量在 16ms 内少创建对象,比如在 onDraw 中创建 Paint 对象,decode Bitmap 之类的
二、内存优化
1、防止内存泄漏,还有些代码时要注意防止内存泄漏,还可以使用Leakcancary内存检测工具。
2、合理使用如数组、链表、队列、栈、树、哈希表等数据结构。在这说一下,推荐两个安卓常用的SparseArray和ArrayMap,
他们相比hashmap比较节省内存,在1000以下,性能上的差异可以忽略。
3、用int或者字符串常量代替枚举,枚举太占内存,大概是int的2倍。
内存优化之图片优化
1、把图片素材放在合适的目录下
2、bitmap优化,就是加载图片时可以调用BitmapFactory.Options来按照一定采样率来加载所需的图片大小。
3、用Glide、picisoo等三方框架加载图片。
三、电量优化
耗电的原因:1、大数据的传输 2、解析大量的文本数据 3、不停的在网络间切换
解决方案:1、先查看是否处于网络连接状态,如果没有连接成功,就不要执行响应的程序。
2、使用高效的数据格式和解析方法,如json
3、在进行大数据请求时,使用GZip压缩,它会大大减少文本文件的体积,从而使数据的传输效率变高
在开发中,也要灵活的判断当前电量,如果电量低的话,就减少一些更新的操作,如果充电时或者电量充足时就加快App更新速度