安卓开发之《第一行代码》小结(未完结)

一周时间,把第一行代码的前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基础的同学学习。但是也有一些问题吧,首先是以例子讲解,但是把例子的思想思路讲的太全太完整,没有引出思考,让我这样的小白很容易流于各种表面的功能;其次,每一章背后的打怪升级的故事,有点鸡肋的感觉,希望留一些问题,当然这些故事可能会带来些许成就感吧。

 

posted @ 2015-12-22 21:02  雪贺  阅读(484)  评论(0编辑  收藏  举报