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.了 ...
随机推荐
- gpu命令cuda命令
# device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")os.envi ...
- 使用 git 来管理 PCB 版本
使用 git 来管理 PCB 版本 在传统的 PCB 版本管理是复制一份,再重命名,写上日期,写上修改日志. 自从接触了 git 后,发现 git 的版本管理完全可以胜任,且可以做的更好. 原来使用商 ...
- Java练习 SDUT-3849_分数四则运算
分数四则运算 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 编写程序,实现两个分数的加减法 Input 输入包含多行数 ...
- 巨蟒python全栈开发-第11阶段 ansible_project3
今日大纲: 1.用户创建 2.前端优化 3.用户编辑 4.用户删除 5.ansible api介绍 1.用户创建 新建一个user_create.html的页面 <form class=&quo ...
- SDUT-3347_数据结构实验之数组三:快速转置
数据结构实验之数组三:快速转置 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 转置运算是一种最简单的矩阵运算,对于一个 ...
- 是时候了解React Native了
文章首发于简书,欢迎关注 随着科技的发展,手机开发也在向好的方向不停的转变.IOS和Android两大手机操作横空出世,称霸江湖.我们每开发一个手机软件最少都需要开发这两个终端. 两大操作系统都在不断 ...
- 2018-8-10-WPF-修改按钮按下的颜色
title author date CreateTime categories WPF 修改按钮按下的颜色 lindexi 2018-08-10 19:16:53 +0800 2018-03-15 2 ...
- @codeforces - 1096G@ Lucky Tickets
目录 @description@ @solution@ @accepted code@ @details@ @description@ 已知一个数(允许前导零)有 n 位(n 为偶数),并知道组成这个 ...
- 2016国产开源软件Top100(Q1)
2016国产开源软件Top100(Q1) 随着互联网的发展.开放标准的普及和虚拟化技术的应用等诸多IT新领域的创新及拓展,开源技术凭借其开放性.低成本.稳定性.灵活性.安全性和技术创新性等特点迅速走向 ...
- 防止SyntaxHighlighter.js的闪烁闪一下的方法
SyntaxHighlighter.js是一个代码高亮的JS插件,使用也很简单,但是由于是浏览器段执行JS代码来着色,会出现视觉上闪一下的效果.比如你的20行代码网页打开显示高度为100px,但是Sy ...