学习android的一点体会

       以下只是个人在android学习工作过程中一点点体会,算不上所谓的方法准则,其中可能还有些老生常谈,仅供参考吧。 如果我们要学习的是一个应用程序,下面提到一些信息和方式对我们是有帮助的

1. AndroidManifest.xml
       AndroidManifest.xml,对于应用程序,我们首先看这个文件是有必要,这里会告诉我们应用有哪些activity和service ,哪个activity是主界面,activity所关心的intent-filter等基本信息,了解这些可以先从整体上把握一下应用。至于 各activity之间是怎么跳转的,先充满好奇的点点界面看下DDMS中的log信息就能看到点提示,(留意标签为ActivityManager的log)


2.布局文件layout
       具体到某一个activty的界面,如果想了解它的布局可以查看/res/layout文件,还可以通过hierarchyviewer.bat实时查看手机屏幕前界面的组成元素 这个hierarchyviewer.bat工具对我们学习优秀的程序布局很有帮助,利用它可以很详细的看到界面由哪些view组成,每个view属性的取值是什么和每个view的 精确坐标。

3.数据变化
      上面两条主要是针对应用程序UI界面的,对于了解学习一个应用来说只能算做热身,数据的显示、处理和存储才是我们更关注的东西。大多数时候我们是从数据库 、网络、其它应用来获取数据源,一旦拿到数据,后面的显示就看各应用自己的需要了,保存或发送数据的情况类似,只不过我们从界面收集数据放到一个对象中, 然后再写入数据库或发给其它应用,典型的像写入数据库时Map集合和Activity间传递消息的Intent。其它在数据流向中也体现了应用的业务逻辑,所以跟踪数据的变化 是分析应用的一条主线,同时几乎所有优秀的应用都会采用MVC或类似MVC的方式来组织自己程序结构,以便更好的实现数据解耦操作,前面提到Activity间传递消息的 Intent的设计意图也是如此。

4. Debug与log
      我们要关心的东西说完了,具体到实际操作要怎么做呢?只是简单的读程序所获得信息量不会太多,甚至会迷失在庞大繁杂的代码中。相信下面的两种方法大家都 不会陌生----Debug和打印log,先说debug,程序运行后选中所在的进程,再想要调试的地方打下断点运行或打好断点直接以debug方式运行程序,通过断点所展示 的堆栈的信息可以更好的了解代码流程和查看变量实时的取值。以上是针对应用的程序的调试,可以很方便的运行和调置断点,如果是Framework的代码或不能直接运行程序 呢?这时就要通过 Remote Debug远程调试了,远程调试的优势在于不用运行程序,只要有程序的代码就可以了,也就是说如果想调试Framework部分的代码,把要调试的 Framework的代码放入工程,不用编译,有出错红叉也不要介意,不影响调试的。选中工程后右键选 deubg as ---> debug configurations --> remote debug 端口选择 8700,后面的工作就和以往的调试一样了,远程调试要注意的一点是工程中的代码和机器运行的代码要完全一致,否则会出现代码错位,你看到的并不是你想要的结果。
       再来看下打印Log,并不是所有的程序代码都可以调试,有些地方对于代码的执行是有时序的要求的,断点会打乱程序的时序,会出现想不到的结果,这个时候只能通过 log信息,在你所认为关键的地方写下Log,通过log信息查看变量的值和代码流程,这里要注意的是log语句的规范,分清log级别,如果是测试log后续要及时删除,在log尽量 不要调用值可能为null的对象,如果实在要用要判断后使用,小心一句log引起的系统崩溃。 更多的时候debug和log我们是同时使用的,哪个多一些就看具体情况和个人喜好了。
  
       应该就这些了,拿到一个新应用做完这些,估计应用也清楚的差不多了,后两条并不只限于app应用分析,事实上分析Framework也同样适用。我们要做的是从整体上把握流程,细节上关注数据的变化,个人意见,仅供参考,同时欢迎留言一起探讨程序学习的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值