本文发表于KuTear's Blog,转载请注明
by KuTear
注: keymap调为eclipse模式(File > Settings > Keymap > Eclipse)
基本的快捷键
搜索相关
- 函数/变量的引用(Ctrl+G)
- 字段搜索(Ctrl+H)
- 文件名搜索(类,XML) (Ctrl+Shift+R)
- 类名搜索(Ctrl+Shift+T)
- 通用搜索(文件,字段,类) (Double Shift)
- 文件内字段搜索(Shift+f)
- 文件内方法/变量搜索(Ctrl+O)
调试相关
- Debug模式运行(Shift+Alt+D)
- 对已运行程序启用调试(默认无,需配置)
- 执行进入函数内部(F5)
- 执行不进入函数内部(F6)
- 函数内部直接跳到调用处(F7)
- 跳到下一个断点(F8)
- 跳到光标处(Ctrl+R)
- 计算值(Ctrl+U)
Git相关
- 添加文件追踪(Ctrl+Alt+A) 注:同QQ截图冲突
- Push到服务器(Ctrl+Shift+K)
其他常用快捷键
- 快速功能查找(Ctrl+Shitf+A)
- 快速实现接口(Alt+Shift+P)
- 复写方法/构造器/Setter And Getter等(Alt+Insert)
- 运行程序(Shift+Alt+X)
- Android Studio全屏模式(需配置)
- 拷贝光标所在行到下一行(Ctrl+Win+Alt+↓)
- 双斜杠注释(Ctrl+/)
- (/* */)注释(Ctrl+Shilt+/)
- 快速导入包,实现接口(Alt+Enter)
- 文件/字段/方法重命名(Ctrl+Shift+R)
- 类继承关系(F4)
- 最近打开/最近编辑(Ctrl+E/Ctrl+Shift+E)
- 关闭当前文件/全部文件(Ctrl+F4/Ctrl+Shift+F4(Ctrl+Shift+W))
- 在引用处查看方法/类的实现(Ctrl+Shift+i)
- 去除无用导入(Ctrl+Shift+O)
- 代码格式化(Ctrl+Alt+L/Ctrl+Shitf+F) 注:Ctrl+Alt+L与Ubuntu锁屏键冲突,Ctrl+Shitf+F与一般输入法(搜狗)的简繁切换冲突
- 方法/字段的说明查看(Shift+Ctrl+Space/F2)
- 返回至上次浏览的位置(Alt+Left/Right)
- 大小写切换(Ctrl+Shift+U)
- 硬编码提取到资源文件(Alt+Enter)
- 类切换(Ctrl+Tab)
- {}的切换(Ctrl+[/])
快捷键与Live template的定制
快捷键设置
-
这里以前面的Android Studio全屏模式为例来说明
根据名字搜索(full screen)
添加快捷键,注意不要冲突
保存设置
Live template
- 自带模板
在Eclipse编写主函数
public static void main(String[] agrs){
...
}
的时候,我们只需要输入main
+Enter
键就会生成以上代码,因为它就是一个模板,始终的都不会改变.在Android Studio/IDEA中同样有该功能,只不过输入的内容有所改变.当输入psvm
+Enter
键就回生成以上代码.
在Android Studio中还内置了很多模板
比如
Log.X(...)
系列,
findViewById(...)
,以及
for(...)
等等.
- 自定义模板
下面我以Log
来做说明.
在我们的项目中一般不会直接使用Log
来打印日志,而是需要给它一个可控的开关,在正式版中把日志信息关掉,只在开发版中打开日志.
public class JLog{
public static final boolean isDebug = true;
public static void d(String tag,Object obj){
if(isDebug){
Log.d(tag,obj==null?"Null":obj.toString());
}
}
}
新建模板
在代码中键入
jlogd
+
Enter
就会自动生成
JLog.d(TAG,);
自需要你添加obj
对象即可,使用模板会大量减少代码的输入,减少程序员的工作量.
对于上文中的TAG
对象,我习惯与在创建类的时候就通过模板自动生成了TAG
常量,如果你不是很习惯这种方式,可以给TAG
指定为当前类的名字.
具体步骤如下
具体的变量名称可以参考Live Template Variables
调试与分析
代码调试
启动调试的两种方式
- Debug模式启动
- app启动之后attach
日志过滤
- 等级过滤
- tag名字过滤 [系统日志(如Activity的启动会有ActivityManager)]
调试
在项目开发过程中,服务器返回的数据可能只是一个模拟的数据,它覆盖的面有限,比如一款产品包含预售,在售,缺货等等状态,但是这是服务端开发人员并没有完成整个开发,而是仅提供一个模拟的数据,而且仅是在售状态.客户端会根据状态设置不同的展示,比如在非在售是按钮置灰等.
这时我们就可以在调试的时候改变某些字段的值来达到覆盖各个情形.
断点类型
- 普通断点
- 条件断点
- 日志断点
- 方法断点
- 异常断点
其他附带工具的使用
Dump Java Heap
MAT
Shallow Size是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的Shallow Size由其成员变量的数量和类型来定,而数组的ShallowSize由数组类型和数组长度来决定,它为数组元素大小的总和。
Retained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C,C就是间接引用) ,并且排除被GC Roots直接或者间接引用的对象
Allocation Tracking
Lint
代码中标黄的部分
启动: Analyze>Inspect Code
插件推荐
ADB idea
Adds the following ADB commands to Android Studio and Intellij:
- ADB Uninstall App
- ADB Kill App
- ADB Start App
- ADB Restart App
- ADB Clear App Data
- ADB Clear App Data and Restart
提供app卸载,app数据清理,app重启等功能,使得我们不再需要在手机上进入app详情页面进行数据清理等工作.
Android Parcelable code genertor
Plugin which generates Android Parcelable boilerplate code for you.
自动生成序列化相关函数
参考链接
- Android - 利用Eclipse Memory Analyzer(MAT)检测内存泄露问题
- 使用新版Android Studio检测内存泄露和性能
- Java堆:Shallow Size和Retained Size
- Android Studio你不知道的调试技巧