zm.blog

select * from learn


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

通过代码示例来学习面向对象六大原则

发表于 2019-09-12 | 分类于 Java , 设计模式 | | 阅读次数:

在阅读 Android 系统底层源码或者开源框架源码时,发现内部大量的设计模式,如果你对设计模式不懂的话,那么阅读源码真的是寸步难行。那么这篇文章我们先来学习面向对象的六大原则,设计模式大概 23 种,后面我们一步一步来学习它。

单一职责原则

单一职责原则的英文名称是 Single Responsibility Principle ,缩写是 SRP 。 SRP 的定义是:就一个类而言,应该仅有一个引起变化的原因。简单的来说,就是一个类中应该是一组相关性很高的函数、数据的封装。单一职责的划分界限也并不是那么的清晰,很多时候都是靠个人经验来给定界限,当然,最大的的问题就是对职责的定义,什么是类的职责,以及怎么划分类的职责。

下面我们就以 图片加载库 的例子代码来对类的职责简单说明下,在设计一个图片加载库之前,我们需要先大概画下 UML 类图,有了 UML 图之后写代码就能更加的清晰。

阅读全文 »

推荐一波最近学习Gradle的项目

发表于 2019-09-12 | | 阅读次数:

最新搞了好久的 Gradle,说起 Gradle 这个东西也很奇怪,明明在 gradle 文件内是支持各种我们熟悉的代码的,比如 Java,Groovy,但是就是在里面写几个功能极其费劲,总体而言,还是对其原理缺乏认识导致的。

再者,我们在研究很多技术时,基本都离不开 Gradle 相关的知识,比如编译相关,热修复,插件化,很多性能优化相关,反正你想干涉整个打包流程,或者在编译期间搞点小动作,或多或少是要了解相关知识的。

好了,下面就推荐一些学习资源,基本上足够大家系统性学习了,当然前提是你愿意看哈…

官方用户手册

如果英文足够好的话,当然首选官网了:

https://docs.gradle.org/current/userguide/getting_started.html

而且官网也提供了 user guide pdf 的下载:

https://docs.gradle.org/current/userguide/userguide.pdf

想离线看很方便。

阅读全文 »

马云卸任挥泪洒现场,核心观点总结他所想

发表于 2019-09-11 | 分类于 随笔记 | | 阅读次数:

去年,在教师节那天,阿里巴巴集团创始人马云今天公开信宣布:一年后的阿里巴巴20周年之际,即2019年9月10日,也就是昨天,他将不再担任集团董事局主席,却留下句句触动心灵的话!

阅读全文 »

Android_build.gradle配置详解

发表于 2019-09-11 | 分类于 Android , Gradle | | 阅读次数:

Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图:

阅读全文 »

Android_Studio_3.5:稳步推进ProjectMarble计划

发表于 2019-09-10 | 分类于 Android , Android Tips | | 阅读次数:

我们在 Android Studio 3.5 中引入了许多质量变更,请参阅《Android Studio 3.5 Beta 现已发布》或者 Android Studio 版本说明,查看完整版变更列表。当然,您也可以先阅读一下这篇文章或收看下方视频,快速了解一下其中的若干重要变更:

  • 腾讯视频链接: v.qq.com/x/page/w091…
  • Bilibili 视频链接: www.bilibili.com/video/av657…

系统健康

Project Marble 计划中系统健康方面的改进包括: 内存性能、输入与用户界面冻结、构建速度、CPU 使用以及 I/O 性能。我们针对这五点分别设计了新的监测机制,以便在开发过程中更准确地识别问题,此外,流程上的优化也让团队得以更好地分析用户反馈,从开发者自愿分享的统计数据和错误报告中获取更多洞见。

尽管系统健康的许多优化项可能并不为大家所熟知,不过其中还是有几个比较明显的变更,其中包括:

自动推荐内存设置

在 Android Studio 3.5 中,IDE 会识别出一个应用项目在 RAM 容量更高的机器上何时需要更多的 RAM,并在通知开发者增加内存堆大小;或者您也可以在 Appearance & Behavior → Memory Settings 下自行调整设置。

阅读全文 »

在浏览器输入URL回车之后发生了什么

发表于 2019-09-09 | 分类于 前端 , tips | | 阅读次数:

前言

这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。

这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅.

注意:本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。

大致流程

  1. URL 解析
  2. DNS 查询
  3. TCP 连接
  4. 处理请求
  5. 接受响应
  6. 渲染页面
阅读全文 »

Google终于发布了Android 10正式版

发表于 2019-09-05 | 分类于 Android , Android Tips | | 阅读次数:

前言

9月4号凌晨,Google终于发布了Android 10正式版!

全新的Logo,依然沿用经典机器人,但在图标,颜色及细节上都有明显变动。新的设计是为了更加现代,更加易用。特别是文字从绿色改为了黑色,这样的变更对视觉障碍者更加友好。

除了Logo的变化,新版Android系统的命名也有重大变动。现有的命名规则是安装英文字母顺序依次选区甜品或零食来命名。如果从09年的Cupcake算起,不算08年开始的alpha和beat测试版,到现在已经用了10年。

在新的版本中将打破甜品,零食的命名规则,可能改为Android 10。David表示:“改变命名是为了避免全球不同地区的误解,某些语言里L和R是没有区分的。另外有些地方馅饼也不是甜点,棉花糖虽然味道不错,但是在世界上有很多地区是不受欢迎的食物。”

阅读全文 »

优雅解决Android软键盘弹出时把布局顶上去

发表于 2019-08-27 | 分类于 Android , Android Tips | | 阅读次数:

解决方法

方法一:

在你的activity中的oncreate中setContentView之前写上这个代码

1
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

方法二:

在项目的AndroidManifest.xml文件中界面对应的里加入android:windowSoftInputMode=”stateVisible|adjustResize”,这样会让屏幕整体上移。如果加上的是
android:windowSoftInputMode=”adjustPan”这样键盘就会覆盖屏幕。

方法三:

把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。

阅读全文 »

Android APK 安装的原理

发表于 2019-08-26 | 分类于 Android , Android Tips | | 阅读次数:

前言

大家有没有想过一个应用的APK是怎么被安装到安卓手机上的,安装的本质是什么?我们知道,Windows应用程序的安装包是一个可执行的压缩包,安装的过程是把压缩包中的数据和依赖库拷贝到安装目录,再在桌面或启动栏创建快捷方式,那么安卓的APK安装过程是不是也是这样的呢?本文将为大家解答这些问题。

APK包的构成

首先,我看一下APK包的构成,Android的APK包和Windows应用程序安装包是不同的,它只是个简单的压缩包,没有可执行的能力,我们还可以用zip工具直接解压它。

一个APK包含以下这些文件:

  • META-INF目录:包含两个签名文件(CERT.SF和CERT.RSA),以及一个manifest文件(MANIFEST.MF)
  • assets目录:包含工程中的asset目录下的文件,可以使用AssetManager获取
  • res目录:包含那些没有被编译到resources.arsc的资源
  • lib目录:包含适用于不同处理器的第三方依赖库,这里边可以有多个子目录,比如armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, 以及mips
  • resources.arsc文件:存储编译好的资源,包括项目工程中的res/values目录里的xml文件,它们都被编译成二进制格式,也包括一些路径,指向那些没有被编译的资源,比如layout文件和图片
  • classes.dex文件:项目中的java类都被编译到该dex文件,这个文件可以被Android的Dalvik/ART虚拟机解析。
  • AndroidManifest.xml:二进制格式的manifest文件,这个文件是必须的。

这些文件是Android系统运行一个应用程序时会用到的数据和代码,下面介绍系统如何安装一个APK包。

阅读全文 »

静态代码lint常见报错处理

发表于 2019-08-23 | 分类于 Android , Android Tips | | 阅读次数:

最近一周做了一些关于Android静态代码检测的东西,对于一些常见的lint警告做了记录,其实对于常见的lint警告我们得处理步骤可以分为如下:

  • 查看lint报错的错误类型
  • 追踪到代码处,确定是否代码自身问题
  • 分析该类错误影响范围
  • 确定解决方式(规范代码、添加注解、添加规则)
规范代码

一般是由于开发者在开发时,不细心造成误写等,或者是某些API过时,需要进行手动修改。

添加注解

对于某些特殊需求,可以通过加注解来避免lint报错,以下给出常见的添加注解的地方

java源代码
1
2
3
@SuppressLint("xxxx") // xxxx代表某种lint检测类型
public void test(){
}
阅读全文 »
1…111213…38
ZhangMiao

ZhangMiao

Android/Flutter Developer

379 日志
58 分类
143 标签
RSS
E-Mail QQ Github StackOverflow
友情链接
  • Kaisir
  • Liujianhui
  • Leo
  • Hongyang
  • Liuwangshu
  • Jspang
  • Blankj
  • WuXiaoLong
  • Molunerfinn
  • Ofind
  • Gcssloop
© 2024 ZhangMiao
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次 本站总访问量 次