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_安卓的知识体系梳理的更多相关文章
- 类模板语法知识体系梳理(包含大量常犯错误demo,尤其滥用友元函数的错误)
demo 1 #include <iostream> #include <cstdio> using namespace std; //template <typenam ...
- 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!
前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...
- Java学习知识体系大纲梳理
感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...
- 前端---梳理 http 知识体系 1
最近看了http相关的知识点,觉得还是有必要整理下,这样对自己的网络知识体系也有帮助. http 是什么 http叫超文本传输协议,可以拆成超文本.传输.协议来理解 协议 http 是一个用在计算机里 ...
- 终于有人把Android技术面试知识体系整理出来了,这些学习手册让你的面试稳如泰山
前言 年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心.想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构.整体包括Java.Android.算法.计算机基础等等,相应的 ...
- github上最全的资源教程-前端涉及的所有知识体系
前面分享了前端入门资源汇总,今天分享下前端所有的知识体系. 个人站长对个人综合素质要求还是比较高的,要想打造多拉斯自媒体网站,不花点心血是很难成功的,学习前端是必不可少的一个环节, 当然你不一定要成为 ...
- [Android Pro] UI设计师不可不知的安卓屏幕知识
reference to : http://www.android100.org/html/201505/24/149342.html 不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI ...
- .NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标
文章出自:http://www.cnblogs.com/ice-river/p/3475041.html 一 .NET平台技术体系梳理 .NET平台应用领域众多(桌面开发,web开发,移动开发),不断 ...
- UI设计师不可不知的安卓屏幕知识
不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做过一点安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家! 1.了 ...
随机推荐
- CC2540 / CC2541 竟然支持 Bluetooth BLE 5.0?
CC2540 / CC2541 竟然支持 Bluetooth BLE 5.0? 无意中发现 CC2541 的 BLE 协议栈更新了. BLE-STACK is Bluetooth 5.0 qualif ...
- Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)
研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户能够清晰的看到先启动竖屏(过程1)再切换到横屏的过程,因为灭屏的时候onSaveInstanceState()保存的时横 ...
- iOS 设计 用户为王 - 关于征询授权、注册及加载等待的体验优化
你要做的东西一定要是你无比渴望这世界上能出现的东西,这股热情和能量将会融入到你的应用中,成为它腾飞的初速度,为你带来积极反馈.把自己当做app最重要的用户,这一点非常重要. http://www.co ...
- oracle函数 months_between(d1,d2)
[功能]:返回日期d1到日期d2之间的月数. [参数]:d1,d2 日期型 [返回]:数字 如果d1>d2,则返回正数 如果d1<d2,则返回负数 [示例] select sysdate, ...
- HZOJ visit
对于前30%的数据,可以考虑dp,f[i][j][k]表示时间为i,在i,j位置的方案数,枚举转移即可.要注意的是可以走到矩阵外. 对于另外30%数据,考虑推一下式子,设向右走y步,左z,上s,下x. ...
- Open Source GIS and Freeware GIS Applications
Open Source GIS and Freeware GIS Applications An open source application by definition is software ...
- 深入python
while循环知识: while是关键字 格式我们要怎么写:; while 条件 : 缩进 循环(代码块) 这里面有个死循环######条件如果一直为真,就形成了一个环,就成为了死循环 那我们如 ...
- Project Euler Problem 21-Amicable numbers
先说最暴力的算法,直接对一万内的每个数字暴力分解因子(对每个数字的时间复杂度是O(sqrt(n)的),然后,用个数组记录下来因子和,然后寻找 亲密数. 好一点:要先打个素数表,然后对每个数字,分解素因 ...
- Chrome接口请求一直是pending状态,但接口实际上是正常的
1.现象 个别机器突然出现Chrome访问我司产品异常,本该通过接口获取的数据没有呈现,之前都是好好的,而且其他机器同样用同版本Chrome访问正常. 出现问题的机器重装Chrome问题依然存在,直到 ...
- redis 写入数据 越来越慢 是什么原因
redis并不会因为key的增加而导致写入明显变慢,肯定是其他因素.如果redis开启了持久化,在进行持久化时,性能必然下降,可以使用config命令查看持久化设置了没有.另外考虑是否是内存不足,一般 ...