一周时间,把第一行代码的前13章大概看了一遍,现在看书养成了急于求成的习惯吧,虽然每个代码都自己实现了一遍,但是很囫囵吞枣。正好手机拿去修了,小结一下这本书。看的电子书。先把章节目录理一理。
第一章:启程 第一章主要是一个概述,包括android版本历史的介绍,android四大组件,android开发环境的搭建,这里用的eclipse+虚拟机,个人觉得还是用真机靠谱,AS和虚拟机都卡的要死
第二章:活动 四大组件之一
2-1 什么是活动 活动可以说就是我们可以看得到操作的了的组件
2-2 活动的基本用法
2-3 Intent intent的翻译是意图,目的,控制组件间的跳转
2-4 活动的生命周期 onCreate--onDestroy onStart--onStop onResume--onPause onRestart这是贯穿在活动始终的7个函数
活动启动:onCreate onStart onResume
活动暂停:onPause
活动唤醒:onResume
活动终止:onPause onStop onDestroy
2-5 活动的启动模式 有点忘记了,四种启动模式Standard SingleTop SingleTask SingleInstance
安卓采用栈的方式来管理活动,
Standard模式就是每次启动一个活动,就创建这一活动的实例压入栈顶,不管栈内是否已经有这一活动的实例。(以浏览器举例,有点像F5刷新页面的意思)
SingleTop简单来说就是当某一活动的实例在栈顶时,再启动这一活动,直接调用栈顶实例,不创建新的实例。(F5不刷新页面)
SingleTask的启动模式则是当某一活动在栈内时,将在它上方的所有活动出栈,不创建新的实例。(无论从那个入口,都会回到上次访问的页面状态)
SingleInstance将会为当前活动创建一个单独的栈,主要是用来实现活动的共享,不同的程序可以访问同一个活动。(新开了一个浏览器窗口)
2-6 随时结束所有活动 这里是通过对Activity类的继承来实现的,创建ActivityControl类,将所有Activity添加到List管理,继承实现自己的Activity类,调用ActivityControl即可,感觉两个类可以合并到一起实现
第三章:UI设计 大头UI设计,很见功力的地方,不过书里只是介绍了简单的TextView、Button、EditView等等使用方法
3-3 四种布局方式 LinearLayout RelativeLayout FrameLayout TableLayout又是快忘记的内容
LinearLayout线性布局,最基本的布局方式,水平或者竖直排列各个VIEW
RelativeLayout相对布局,前两种布局方式基本和HTML里的布局类似,相对布局就是控件间和控件与父布局相对定位,上下左右就这么简单。。。。
FrameLayout帧布局,暂时还没用过,将所有控件在左上角布置,据说在碎片中会用到
TableLayout表格布局,让控件以表格的形式布局,也没具体用过
第四章:碎片(平板开发,略过了)
第五章:广播机制
5-1 简介 两种广播机制 有序广播和标准广播 有序广播同一时刻只有一个接收器能接收到(例如短信,我们可以通过这样的机制实现短信的拦截)标准广播就是普通的广播
5-2 接收系统广播 安卓系统本身会发出很多广播,包括电量变化、时间变化、开关机等
广播接收器有两种注册方式
动态注册:在代码中注册广播接收器
静态注册:在AndroidManifest.xml中注册接收器
注意很多广播需要权限的支持
5-3 发送自定义广播 这里通过new Intent("com.example.broadcasttest.MY_BROADCAST"); sendBroadcast(intent);发送自定义广播,sendOrderedBroadcast(intent,null)函数则是发送有序广播,有序广播需要在接收器设置优先级来决定接收顺序。当然还可以实现本地广播,不过本地广播感觉可以直接通过intent传递,不需要用到广播。
第六章:数据持久化 android提供了3中数据存储方式,文件存储、SharedPreferences存储和SQLite数据库存储
文件存储:这里就是通过Java流的方式将数据存储到文件中
SharedPreferences 存储:通过键值对的方式将数据存储到文件中,这样读取数据更为简便(通过键值即可);
SQLite存储: 安卓自带的数据库
第七章:内容提供器 又快忘记了,内容提供器用于跨程序共享数据
一般用来获取一些系统数据,程序间数据共享的需求不大
contentProvider onCreate() query() insert() update() delete() getType() 类似数据库,先大略的看下。
第八章:手机多媒体
8-1 通知 通知的用法和传感器的用法一样创建NotificationManager,Notification的创建和设置,Notification的启动,另外可以通过PendingIntent点击通知触发事件,这个在另一篇随笔里详细讲了下
8-2 接收和发送短信 系统接收短信时会发送android.provider.Telephony.SMS_RECEIVED广播,所以可以通过广播接受器接受短信,另外短信的接受通过有序广播来实现,也就意味着我们可以拦截短信。发送短信的功能没有具体实现,后面补上,这个功能是不是可以用来发送验证码呢?
8-3 摄像头和相册 拍照和从相册取照片的功能在另个随笔里提及
8-4 播放视音频 音频播放较为简单,通过MediaPlayer类实现即可,视频的播放的话涉及的是一个VideoView类
第九章:服务 后台运行的程序,但是服务不存在于独立的进程,而是依赖于创建服务所在程序进程,程序结束,服务也会终止。(注意给服务创建子线程,不然可能出现阻塞的情况)
9-1 简介
9-2 多线程编程 通过继承Tread类或是实现Runnable接口来实现多线程,更简单的是通过匿名类来实现,这样可以不用新建class
new Thread(new Runnable() {
@Override
public void run() {
// 处理具体的逻辑
}
}).start();
这里提到了一个异步消息处理机制,子线程中不允许对UI操作,通过子线程触发消息,主线程处理消息的方式解决
9-3 服务的基本用法 继承service类,通过onCreate()、onStartCommand()、onDestroy()对应服务创建启动和结束的操作,服务同样通过intent来启动和结束,startService和stopService 特别的onBind()方法,绑定活动和服务
9-4 服务的生命周期 服务的生命周期其实和活动很相似
9-5 其他技巧
前台服务:在状态栏显示服务
IntentService:异步的会自动停止的服务类。。。可以省去结束服务和开线程的工作
第十章:网络技术(部分略过)
第十一章:定位服务(部分略过)
第十二章:传感器 传感器这一章主要是各种Sensor,光学传感器、加速度传感器、地磁传感器等等,传感器的调用方法基本一致,基本就是
创建SensorManager,获取传感器服务getSystemService(context.SENSOR.SERVICE),创建相应的Sensor,设置Sensor监听器,里面演示的几个例子感觉难度更主要是具体应用的算法,包括安卓官方提供的记步算法,基础不行,只能借轮子
第十三章:高阶技巧
13-1 全局获取context的技巧 总体思路就是自定义一个Application类继承原有的Application,在这个类内实现获取context的方法,之后本身不具有context属性的组件就可以通过这个类来获取context
13-2 使用Intent传递对象 intent.putExtra方法,这里提到的两种方法,一种是让数据类实现序列化接口Serializable,一种是通过实现Parcelable接口,不过感觉前者更加简洁明了
13-3 定制自己的日志工具 这里的思路有点类似C中#define debug printf的方式,用自己类覆盖log,同时设置开关
13-4 调试android程序 单步调试,感觉现在单步调试效果不佳,可能是我理解不深吧,现在还是习惯打log,看bug,网上搜这样的思路
13-5 编写测试用例 浅尝辄止,没有入门的感觉,希望有更具体的例子
第十四章:实战开发(未完成)
第十五章:应用发布(未完成)
PS:四大组件,都需要在manifest里注册使用,而系统本身的服务或者功能很多都是需要权限的申请,这些都是需要注意的细节。
总体来说郭霖大神的《第一行代码》一书结构很合理,适合有一定JAVA基础的同学学习。但是也有一些问题吧,首先是以例子讲解,但是把例子的思想思路讲的太全太完整,没有引出思考,让我这样的小白很容易流于各种表面的功能;其次,每一章背后的打怪升级的故事,有点鸡肋的感觉,希望留一些问题,当然这些故事可能会带来些许成就感吧。