Android7_安卓的知识体系梳理

最近梳理了一下安卓的知识体系,先构建一个整体性的认知,也作为以后的学习路线的依据。

 

【一、从原理角度出发】
1、Activity生命周期和启动模式
2、View的事件体系与工作原理
3、四大组件的工作过程
4、JNI和NDK编程 //
5、线程与线程池 //多线程编程、线程同步问题、
6、消息机制 //主要是讲Handler、MessageQueue,继续深入挖掘底层原理
7、IPC机制 //序列化、Binder、AIDL的使用、选择合适的IPC(RPC场景)、哪些分类(Bundle、Messager、文件共享、ContentProvider、Socket、AIDL);

 

 

【二、从实操角度出发】
0、入门操作
0.1、搭建开发环境;//开发工具、调试工具及各小工具等;
0.2、创建项目;//gradle、配置、编译;
0.3、掌握日志工具的使用;
0.4、应用程序签名机制;
0.5、应用目录结构分析 //各项资源res、清单文件等

 

1、使用网络技术
1.1、TCP协议基础;使用serversocket创建tcp服务端;使用socket进行通信;
1.2、URL、手动发送HTTP请求:HttpURLConnection的用法、OkHttp也是很常用的网络通信库,了解其基本用法;
1.3、JSON、XML格式数据的解析;//Pull&SAX解析;JSONObject和GSON解析;
1.4、WebView控件的使用;//在应用里嵌入浏览器,方便展示各种网页;

2、多媒体开发
2.1、将程序运行到手机上;
2.2、使用通知功能;
2.3、调用摄像头和相册;
2.4、多媒体播放:音频、视频;

3、定位应用开发LBS
3.1、网络定位与GPS定位;
3.2、支持GPS的API(LocationManager、LocationProvider);
3.3、申请API Key以便使用谷歌或百度Map的服务;

 

4、界面编程的各种控件Widget
4.1、常见控件的使用; //EditText、Button、TextView、ImagaView、ProgressBar、ListView、RecyclerView、AdapterView、
4.2、4大布局; //布局文件的使用;
4.3、自定义控件;
4.4、杂项组件的使用;//Toast、CalendarView、DatePicker、TimePicker、NumberPicker、SearchView、TabHost选项卡、ScrollView、
4.5、对话框; //AlertDialog、ProgressDialog、
4.6、菜单; //PopupMenu、XML定义菜单、
4.7、ActionBar; //活动条

 

5、四大组件——活动
5.1、建立、配置、使用Activity;
5.2、活动的生命周期和启动模式;
5.3、不同活动之间的切换;Intent(启动活动、还可以在活动间传递数据);
5.4、碎片Fragment相关;//平板中使用

6、事件处理模型:
6.1、监听与回调事件;系统事件与用户事件; //解决多线程下线程安全问题,只允许UI线程修改activity里的UI组件,把事件分发到对应组件中处理;
6.2、Handler消息机制; //解决主线程与子线程之间的问题;子线程解决耗时操作问题;子线程要修改UI的方式;
6.3、异步任务 //一种抽象类,更加简单的异步处理,甚至不需要借助线程与Hnadler;

7、 一些类的使用:
7.1、Intent/IntentFilter; //用Intent传递对象
7.2、Bundle;
7.3、Binder/BinderPool;
7.4、Handler、Message;
7.5、CountDownLacth;

 

8、 四大组件——广播接收器与广播机制
8.1、广播机制介绍; //全局与本地广播、系统与自定义广播;
8.2、广播发送与接收; //BrocastReceiver、
8.3、系统广播消息; //有哪些系统广播消息,如何接收系统广播消息


9、数据存储——持久化技术
9.1、文件存储;
9.2、SharedPreference存储;
9.3、SQLite数据库的使用、SQL语句;
9.4、LitePal框架使操作数据库更简单;


10、四大组件——内容提供器
10.1、运行时权限机制;
10.2、访问其他程序中的数据; //contentresolver、Uri、
10.3、创建自己的内容提供器; //contentprovider 来自程序、来自系统;
10.4、监听数据改变 //contentobserver


11、四大组件——服务
11.1、服务的基本用法 //创建、配置、启动、停止、绑定本地服务
11.2、服务的生命周期
11.3、前台服务、Intent服务 //上面的服务涉及的是本地服务;
11.4、活动与服务通信Binder
11.5、服务类型 //系统提供的服务、自己创建的服务、服务分类(本地、Remote)
11.6、介绍一些系统提供的服务 //电话管理器、短信管理器、音频管理器、振动器、手机闹钟服务
11.7、跨进程调用服务; //学会使用AIDL接口进行跨进程通信



【三、专题技巧探究】
1、MaterialDesign
2、Context的使用技巧
3、定制日志工具
4、如何调试安装程序
5、如何创建定时任务
6、图形与图像处理
7、ANR问题

 

===================================================

【推荐几本安卓的学习书籍】

《第一行代码Android》:适合小白初学者入门的书籍、实践性较强,建立感性认识;

《疯狂的Android讲义》:实践也较多,也穿插一些机制和组件的讲解,不会讲太深。适合第一本读完之后再读这本,差不多安卓就入门成功了;

《安卓开发艺术探索》:这本书侧重讲解一些有深度的机制与工作原理。非常适合入门后补足理论用;

《Android系统源代码情景分析》:更有理论深度,深入源代码中结合使用场景讲解整个应用框架的原理;

 

 

【知名博主传送门】
蜗牛搬家:https://my.oschina.net/u/2002921?tab=newest&catalogId=2306416

罗升阳:https://me.csdn.net/luoshengyang

 

【Tips】
查阅安卓官方开发指南文档:
安装时勾选"Documentation for Android SDK";
Android SDK安装目录中找到docs子目录,docs子目录下打开index.html页面。就可以查看开发指南文档首页了;

===================================================

源码与SDK研究

【源码、SDK相关操作】Android知识结构(SDK、系统源码):https://blog.csdn.net/fandyvon/article/details/7579311


Windows系统下查看安卓系统源码:https://blog.csdn.net/freekiteyu/article/details/70939672

安卓系统架构与系统源码目录:https://www.cnblogs.com/xiongwei/p/9101013.html

Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介:https://www.cnblogs.com/andy-songwei/p/9911386.html

安卓SDK由几层基础架构构成:https://blog.csdn.net/w1043203101/article/details/79471594

安卓SDK目录具体结构及安卓源码的具体结构:https://www.cnblogs.com/zhaowan/p/4561513.html

安卓系统源码下载到编译:https://blog.csdn.net/xx326664162/article/details/86354616

自己动手编译Android源码:https://blog.csdn.net/weixin_30549657/article/details/95578821

====================================================

JAVA编译过程

Java中的.class文件详解:https://blog.csdn.net/xingkongdeasi/article/details/79688505

java编译过程(字节码编译和即时编译):https://www.cnblogs.com/straybirds/p/8513870.html

Jvm、Dalvik和Art的区别:https://www.jianshu.com/p/59d98244fb52

编译包括两种情况:
1、源码编译成字节码(javac负责编译,给JVM看;另外对于移动设备,会用dex编译器将class文件(java字节码)编译成dalvik 字节码)
2、字节码编译成本地机器码

 

还有一些反编译与代码保密性问题;

====================================================

Android7_安卓的知识体系梳理

上一篇:Fiddler手机抓包设置


下一篇:190715-kappa-组合数学+容斥原理