Android 知识整理

开新版本啦,老版本写的内容太多了,我自己找起来都麻烦了,遂决定像代码一样,文章臃肿了就要抽象封装了,相近内容程提炼成一篇汇总性的文章,然后我们再加点设计模式上来,提供一个单例的全局入口,方便使用定位。程序员最好把程序思维带到生活里来,这样有助于我们消化提炼程序思维

架构

架构方面的资料很多,这个结合设计模式提了各种开源库:Android进阶之旅-系统架构


老版本

Android 的点太多了,大的、小的,新的、旧的,总是目不暇接,总结整理下也好自己查好。话说自己写的文章过百了,也不怎么好找了,哈哈,虽然写的不咋地,没人看......

里面有不少半成品,开了好多坑都没天上,大家见谅......

常用占坑:

日常大图鞭策自己,还有如此多的内容呢



content 启动特性图:

  • 数字1:启动Activity在这些类中是可以的,但是需要创建一个新的task,一般情况不推荐;
  • 数字2:在这些类中去layout inflate是合法的,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用;
  • 数字3:在Receiver为null时允许,在4.2或以上的版本中,用于获取黏性广播的当前值

java 基础


Kotlin

原来这里有一大堆话,但是写的有点多,提出来写了一篇
* kotlin - 概述
* kotlin - 基础语法
* kotlin - 函数(对象函数/代码补全)
* kotlin - 高级特性
* kotlin - Coroutine 协程
* kotlin - 代码片段


Android 基础

Android 的小块的知识点是太多,太复杂了,平时必须多加记录,整理才能玩的转 Android ,要不有时你会不自然的萌逼一下的,哇哈哈哈....我就长长这样,狗屎吃过了,自然知道改了。

扫盲篇都是一些基础的生僻知识点:

梳理篇:

有的点实在太讨厌,零零碎碎的点总是很多,一次又学不完,搞不清所有,只能靠水磨工夫去学个圆满


Activity:

Activity 是我们接触最多的了,下面这篇对 Activity 声明周期变化,launchMode,configChanges ,传参都有比较好的解释

关于 ActivityTask 栈,建议大家去看《android 开发艺术探索》,这里面介绍的最正确


Android 疑难杂症处理

android 开发中总是会碰到一些很难解决的疑难杂症,很顽强,很难根治,大多数时候迪欧不知道为什么。


Android Framework

Android 框架层很难看,尤其是系统逻辑晦涩难懂,但是面试,笔试时肯定会碰到,尤其像 launch Activity ,activty 显示流程是必会的,涉及到 AMS,WMS,双向AIDL通讯,window,windowManage,viewRootImpl,N多复杂的过程

推荐大家看 CSDN:kc专栏 的文章,里面涉及很多内容,需要的一般都有,尤其是 android 显示 Surface 这块,分析的很深入,值得学习


Android 进阶篇


我的开源库

在组件化,平台化的今天,我们被要求同一个功能可以在多个 app 项目中复用,这就要求我们必须对功能进行框架级别的封装,也就是把 app 中的一个个包 变成一个活多个 module 组件。这立马就要求开发人员要有至少水平线的代码封装,框架封装能力,封装封装,这真不是说说的,真的是一下子对 android 开发的功底要求就高了起来了,没有相关经验基础的同学真的会无所适从啊,我是深有体会啊,这里分享下自己封装的一些简单的功能组件,算是给大家提供一个思路吧,因为我知道我自己也是个半拉子水平

随着时间的推移,我找到了一些管理如何开发第三方库的指导,都是别人思虑很久后形成的文字,很值得大家没事去看看


UI

Android 的 UI 可不仅仅是狭隘的控件,布局,更是涉及到产品设计的思想,app 开发人员为啥不能去了解产品设计,UI 设计,这些了解了才能优雅,恰当的和 UI 猫,产品汪去沟通,鄙视这些小动物,要不你都不知道怎去喷...........看我的怨念......

LinearLayoutManager manager = new LinearLayoutManager(getContext());
manager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(manager);
LinearSnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(mRecyclerView);

开源库

  • 音视频开发
  1. Vitamio 播放器
    Vitamio 支持 RTMP/RTSP/FLV/HLS(m3u8)/MMS

RTMP 是早期 flash 的,RTSP 系统自带的 VideoView 就能支持,HLS 是基于 http/https 的,MMS 适用于电台,网络广播

    Vitamio.initialize(this)

    mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
    path = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov";
    mVideoView.setVideoPath(path);
    mVideoView.setMediaController(new MediaController(this));
    mVideoView.requestFocus();

    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            mediaPlayer.setPlaybackSpeed(1.0f);
        }
    });
  1. 饺子播放器
  1. 音频录制

app 架构

Android 的架构不是一成不变的,发展也是很快的。最近出了很多架构思想,无论是最初的MVC, 还是近几年风头极盛的MVP, Google推出的MVVM,还是系统层面的组件化,模块化,插件化;最终遵循的架构原则无非就是三点:

  1. 横向划分模块
  2. 纵向划分层次
  3. 解耦通信

代码架构最终实现目的是什么?

  1. 解耦
  2. 复用
  3. 可读性
  4. 健壮性
  5. 提高并行开发效率

移动架构分广义和狭义,光以上讲是划分子系统,狭义上讲是代码分层。

所谓架构,无非两个方面: 分层和通信方式。

想对架构有个总体了解,推荐大家看 DevCW 写的这 3 篇文章:

大家对于 clean 架构可能不是很清晰,大家看这里,这里有比较详细的 mvc.mvp.clean.aac 对比


优化

Android 的优化的点很多的,UI,架构,框架性能,持续集成能力,平台化能力,是否易于修改,是否易于扩展....所以做好 Android 的优化,我们首先要了解很多偏底层的知识点,这些知识点也是很零碎的

优化的前提至少我们得知道 android 是怎么显示的不是,CPU 把 UI 组件计算成 Polygons 多边形 和 Texture 纹理,然后交给 GPU 进行栅格化渲染


持续集成 、 组件化,平台化

16年时的插件化,组件化,热修复是多火,很多人其实对其发展历史不是很了解,有兴趣的朋友看这篇,大牛写的

这篇文章是从前端角度来说的,我喜欢期中的思想,这是阿里的分享,包括 Code Review ,状态(包含数据和变化)这个词, 还有 CR 的思路,流程,内部间 CR 的协作,组织,很赞


通用技术和开发工具支持


资源


感悟

Android 学习,工作的过程中总是有很多感受,感悟,甚至是恍然大悟,这些瞬间的感觉总是一闪而逝,保存不久,无法记忆,所以我希望用文字尽量多的保留那份感悟,以待之后可以常悟常新。还有很多别人的感悟,经验,这些放在一起。


面试


第三方集成经验


android 中处理 carsh 使用 Thread.UncaughtExceptionHandler 来截获错误并进行自己的逻辑处理

public class CrashHandler implements Thread.UncaughtExceptionHandler {

    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
    //回调函数,处理异常出现后的情况
    }
}

我们在里面可以重启 app 或是打印错误信息到本地,详细:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容