zoukankan      html  css  js  c++  java
  • 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、字节码编译成本地机器码

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

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

    学习路线链接:

    Android思维导图: https://www.jianshu.com/p/9cdeaf62cd92

    Android 思维导图 一张图帮你复习Android知识体系:https://blog.csdn.net/qq_22007419/article/details/79940976

    Android 技能图谱学习路线:https://www.jianshu.com/p/88e32ef66ef2

    安卓面试:https://www.jianshu.com/p/cfac5c131a9b

  • 相关阅读:
    linux 进入 GNOME X 界面
    POJ 3436 ACM Computer Factory (拆点+最大流)
    学习:EF(Entity Framwork)结构【转】
    .net上传Excel,解析Excel,导出CSV
    在Handler里面使用Session
    如何用JavaScript判断访问的来源是电脑还是手机,是什么浏览器?
    ASP.NET List泛型分页代码 【转】
    ASP.NET MVC中实现多个按钮提交的几种方法【转】
    清空数据库所有表,所有存储过程SQL语句
    可以不被浏览器拦截的弹出窗口
  • 原文地址:https://www.cnblogs.com/grooovvve/p/11704886.html
Copyright © 2011-2022 走看看