总结

Git项目创建

首先在Github中创建新的库:
在这里插入图片描述
点new创建新的库,跳转到创建界面:
在这里插入图片描述
勾选所选的选项,库创建成功:
在这里插入图片描述

模拟解决冲突

**1.克隆一个远程项目
右键 Git Clone…,输入远程仓库的url,克隆好的远程仓库如图
在这里插入图片描述
2.提交代码到本地仓库
修改库中hello.txt,然后右键—>Git commit --> ‘master’(主分支,也可以是别的分支),这样代码就可以提交到本地仓库,
3.提交到远程仓库
右键–>TortoiseGit---->push…,提交到远程仓库
4.模拟第二人上传项目
在 github上修改提交过的文件,保存
5.冲突产生
右键–>TortoiseGit---->pull…,拉取远程仓库的代码(冲突产生)
在这里插入图片描述进入以后:
在这里插入图片描述解决冲突:
在这里插入图片描述 右键冲突的文件,弹出对话框,可以选中使用左边/右边/两边都用,编辑后保存,选择Mark as resolved(标记为已解决)

分支怎么创建?

创建分支并切换的原理

分支怎么创建?
在项目文件夹下,右键找到TortoiseGit–>create branch–建立分支
你用分支干啥了?
分支中有从主线拉下来的代码,然后在分支中做代码修改,防止主线发生不可逆的错误,
合并分支
先讲分支切换到主分支,然后在项目文件下面,右键鼠标,找到tortoiseGit -->merge -->然后选择需要合并的分支,
用命令行:
查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

实际操作 souertree(git)

gradle:

创建一个项目 会自动生成三个gradle文件,一个是app文件夹下的build.gradle,还有project文件夹下的seeting.gradle,还有项目级别的build.gradle
seeting.gradle:里面包含项目的模块。会在初始化的时候执行,会把我们的模块进行构建。

project类型的build.gradle
一般里面有两个代码块:buildscript,和allprojects,实际的构建会在buildscript代码块里。里面有代码仓库。
然后allprojects代码块,是定义模块属性的。

app类型的build.gradle:
	第一行apply plugin:'com.android.application' 导入的插件,用与构建,测试,打包android项目
	属于app自己的模块。里面有两个代码块,第一个是android,第二个是放我们依赖包的dependencies代码块,
	在android代码块中,有着所有的android配置,之所以这些配置能够使用,是因为我们第一行的导入插件
			compileSdkVersion:用来编译应用的api的版本号
			buildToolsVersion:构建和编译使用的版本号
			里面有一个defaultConfig代码块,
				里面装的整个代码配置应用的核心属性,里面有最小版本可以运行的api版本,
				还有通知系统:targetSdkVersion,最稳定版本为25,
				有versionCode 版本号  versionName:版本名称

	在deoendencies代码块:
		加入依赖的,独立

配置签名文件:release()

性能优化:内存优化 、布局 ,电量、 流量 启动

内存优化:

内存优化的几种方案:

  • :内存泄露:对象在内存堆中分配的空间,当不在使用或者没有引用的情况下,扔不能
    被GC正常回收,经常出现在不合理的编码情况下,大量的内存泄露会导致OOM
    注意代码规范,使用完的对象及时回收,长生命周期对象不要饮用短生命周期对象。
  • :oom:即OutOfMemoer,也就是内存溢出,指我们所使用的内存,大于系统所分配的内存,系统
    不会在分配多余的内存,就会抱oom,一般为bitmap不正当加载,图片进行二次压缩,图片剪裁,图片压缩
    优化关键点:
    static:因为static声明变量的生命周期和app的生命周期一样,如果大量使用,会占据内存空间不释放,积少成多造成内存的不断开最后崩掉,(static一般使用来修饰基本数据类型或者轻量级对象,尽量避免修复集合,或者大对象,常用作修饰全局配置,工具类方法)
    无关引用:我们需求用到传递引用,但是我们无法确保引用传递出去后能否及时回收,比如有代表性的context泄露,很多情况下当activity结束掉后,由于仍被其他的对象指向导致一直迟迟不能回收,就造成了内存泄露,所以要善用SoftReference(软引用 WeakReference(弱引用),LruCache(缓存机制)。
    handler:在ondestory方法中调用handler.removeCallBackAndMessage(null)取消所以的消息处理,包括待处理消息 二是声明handler的内部类为static
    bitmap:图片过大导致,需要进行二次压缩,图片剪裁,及时释放,在加载网络图片时,使用软引用或者弱引用并进行本地缓存。
    io流:及时关流
    String类型拼接的时候,建议stringbuilder替换+拼接
电量优化:

首先通过谷歌开源的Battery Historian来进行分析,
耗电因素:屏幕亮暗相关
设备awake,sleep的切换,尤其是唤醒
cpu运行相关
网络
传感器。
解决方案
1:可以通过获取手机当前充电状态,如果为充电状态,去执行一些非常耗电的操作。
2:当手机空闲时,屏幕会变暗,然后关闭屏幕,最后停止cpu的运行,这样可以防止电池电量掉的快 但有时候我们需要改变安卓系统默认的这种状态,比如玩游戏时,要保持屏幕常亮,比如一些下载操作不需要屏幕常亮但需要cpu一直运行直到任务结束. 最好的方式就是在activity中使用FLAG_KEEP_SCREEN_ON的Flag。不需要特定权限,能正确管理不同app之间的切换,不用担心无用资源的释放问题 windowManager会管理好程序进入后台回到前台的操作,如果确实需要,那就使用:getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

内存抖动

内存抖动会引起频繁的gc回收,从而使ui线程呗频繁阻塞,导致页面卡顿,
内存抖动是由于短时间内有大量的对象创建,伴随着频繁的gc
如何避免:
尽量避免在循环体内创建对象,应该吧对象移到循环体外,
注意自定义viwe的onDraw方法会被频繁调用,所有在这里不应该频繁创建对象。
当需要大量使用bitmap时,试着把他们缓存在数组中实现服用
对应能够复用的对象,同理可以使用对象池将他们缓存起来
studio 自带工具 : 直观看到内存的变化,需要到他当前应用对应的报名下去看那块导致的内存泄露,
MAT 内存分析工具
leanCash :直接指定你界面存在的内存泄露并且将所有引用到的地方都会以链条的形式展示出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值