forked from YorekLiu/yorekliu.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
9 lines (9 loc) · 38.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
<!doctype html><html lang=zh class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="An Android Developer."><meta name=author content="Yorek Liu"><link href=https://blog.yorek.xyz/ rel=canonical><link rel="shortcut icon" href=assets/images/favicon.webp><meta name=generator content="mkdocs-1.1.2, mkdocs-material-6.2.5"><title>Yorek's Blog - Yorek's</title><link rel=stylesheet href=assets/stylesheets/main.15aa0b43.min.css><link rel=stylesheet href=assets/stylesheets/palette.75751829.min.css><meta name=theme-color content=#ffffff><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback"><style>body,input{font-family:"Roboto",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono",SFMono-Regular,Consolas,Menlo,monospace}</style><link rel=manifest href=manifest.webmanifest crossorigin=use-credentials><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-155096376-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){if(this.value){var e=document.location.pathname;ga("send","pageview",e+"?q="+this.value)}})}),document.addEventListener("DOMContentSwitch",function(){ga("send","pageview",document.location.pathname)})</script><script async src=https://www.google-analytics.com/analytics.js></script></head> <body dir=ltr data-md-color-scheme data-md-color-primary=white data-md-color-accent=blue> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#yoreks-blog class=md-skip> 跳转至 </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header-nav md-grid" aria-label=Header> <a href=https://blog.yorek.xyz title="Yorek's" class="md-header-nav__button md-logo" aria-label="Yorek's"> <img src=assets/images/favicon.webp alt=logo> </a> <label class="md-header-nav__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg> </label> <div class=md-header-nav__title data-md-component=header-title> <div class=md-header-nav__ellipsis> <div class=md-header-nav__topic> <span class=md-ellipsis> Yorek's </span> </div> <div class=md-header-nav__topic> <span class=md-ellipsis> Yorek's Blog </span> </div> </div> </div> <label class="md-header-nav__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=搜索 placeholder=搜索 autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query data-md-state=active required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0116 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 019.5 16 6.5 6.5 0 013 9.5 6.5 6.5 0 019.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg> </label> <button type=reset class="md-search__icon md-icon" aria-label=Clear data-md-component=search-reset tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg> </button> </form> <div class=md-search__output> <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> 正在初始化搜索引擎 </div> <ol class=md-search-result__list></ol> </div> </div> </div> </div> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class="md-tabs__inner md-grid"> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=android/3rd-library/3rd-library-source-code/ class=md-tabs__link> Android </a> </li> <li class=md-tabs__item> <a href=flutter/flutter_first_project_1/ class=md-tabs__link> Flutter </a> </li> <li class=md-tabs__item> <a href=leetcode/ class=md-tabs__link> LeetCode </a> </li> <li class=md-tabs__item> <a href=design-pattern/design-pattern/ class=md-tabs__link> Books </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=navigation hidden> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=https://blog.yorek.xyz title="Yorek's" class="md-nav__button md-logo" aria-label="Yorek's"> <img src=assets/images/favicon.webp alt=logo> </a> Yorek's </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1 type=checkbox id=nav-1> <label class=md-nav__link for=nav-1> Android <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Android data-md-level=1> <label class=md-nav__title for=nav-1> <span class="md-nav__icon md-icon"></span> Android </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-1 type=checkbox id=nav-1-1> <label class=md-nav__link for=nav-1-1> 三方库源码解析 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=三方库源码解析 data-md-level=2> <label class=md-nav__title for=nav-1-1> <span class="md-nav__icon md-icon"></span> 三方库源码解析 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=android/3rd-library/3rd-library-source-code/ class=md-nav__link> Android三方库源码分析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/matrix/ class=md-nav__link> 微信APM Matrix解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/matrix-trace/ class=md-nav__link> Matrix-TraceCanary解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/matrix-io/ class=md-nav__link> Matrix-IOCanary解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/matrix-resource/ class=md-nav__link> Matrix-ResourceCanary解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/matrix-sqlitelint/ class=md-nav__link> Matrix-SQLiteLint解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/okhttp/ class=md-nav__link> OkHttp3源码解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/retrofit/ class=md-nav__link> Retrofit2源码解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/rxjava%26rxandroid/ class=md-nav__link> RxJava源码解析及使用实例 </a> </li> <li class=md-nav__item> <a href=android/other/RxJava/ class=md-nav__link> RxJava操作符大全 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide1/ class=md-nav__link> Glide v4 源码解析(一) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide2/ class=md-nav__link> Glide v4 源码解析(二) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide3/ class=md-nav__link> Glide v4 源码解析(三) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide4/ class=md-nav__link> Glide v4 源码解析(四) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide5/ class=md-nav__link> Glide v4 源码解析(五) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide6/ class=md-nav__link> Glide v4 源码解析(六) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/glide7/ class=md-nav__link> Glide v4 源码解析(七) </a> </li> <li class=md-nav__item> <a href=android/3rd-library/migrate-to-glide/ class=md-nav__link> 杂记:从Picasso迁移至Glide </a> </li> <li class=md-nav__item> <a href=android/3rd-library/eventbus/ class=md-nav__link> EventBus源码解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/leakcanary/ class=md-nav__link> LeakCanary2源码解析 </a> </li> <li class=md-nav__item> <a href=android/3rd-library/permissiondispatcher/ class=md-nav__link> PermissionDispatcher源码解析 </a> </li> <li class=md-nav__item> <a href=android/other/constraintlayout/ class=md-nav__link> ConstraintLayout使用大全 </a> </li> <li class=md-nav__item> <a href=android/other/dagger2/ class=md-nav__link> 初学者的Dagger2教程 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-2 type=checkbox id=nav-1-2> <label class=md-nav__link for=nav-1-2> Android开发高手课 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Android开发高手课 data-md-level=2> <label class=md-nav__title for=nav-1-2> <span class="md-nav__icon md-icon"></span> Android开发高手课 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=android/paid/master/ class=md-nav__link> Android开发高手课 </a> </li> <li class=md-nav__item> <a href=android/paid/master/crash_1/ class=md-nav__link> 01 | 崩溃优化(上):关于“崩溃”那些事儿 </a> </li> <li class=md-nav__item> <a href=android/paid/master/crash_2/ class=md-nav__link> 02 | 崩溃优化(下):应用崩溃了,你应该如何去分析? </a> </li> <li class=md-nav__item> <a href=android/paid/master/memory_1/ class=md-nav__link> 03 | 内存优化(上):4GB内存时代,再谈内存优化 </a> </li> <li class=md-nav__item> <a href=android/paid/master/memory_2/ class=md-nav__link> 04 | 内存优化(下):内存优化这件事,应该从哪里着手? </a> </li> <li class=md-nav__item> <a href=android/paid/master/stuck_1/ class=md-nav__link> 05 | 卡顿优化(上):你要掌握的卡顿分析方法 </a> </li> <li class=md-nav__item> <a href=android/paid/master/stuck_2/ class=md-nav__link> 06 | 卡顿优化(下):如何监控应用卡顿? </a> </li> <li class=md-nav__item> <a href=android/paid/master/stuck_3/ class=md-nav__link> 06补充篇 | 卡顿优化:卡顿现场与卡顿分析 </a> </li> <li class=md-nav__item> <a href=android/paid/master/start_1/ class=md-nav__link> 07 | 启动优化(上):从启动过程看启动速度优化 </a> </li> <li class=md-nav__item> <a href=android/paid/master/start_2/ class=md-nav__link> 08 | 启动优化(下):优化启动速度的进阶方法 </a> </li> <li class=md-nav__item> <a href=android/paid/master/io_1/ class=md-nav__link> 09 | I/O优化(上):开发工程师必备的I/O优化知识 </a> </li> <li class=md-nav__item> <a href=android/paid/master/io_2/ class=md-nav__link> 10 | I/O优化(中):不同I/O方式的使用场景是什么? </a> </li> <li class=md-nav__item> <a href=android/paid/master/io_3/ class=md-nav__link> 11 | I/O优化(下):如何监控线上I/O操作? </a> </li> <li class=md-nav__item> <a href=android/paid/master/storage_1/ class=md-nav__link> 12 | 存储优化(上):常见的数据存储方法有哪些? </a> </li> <li class=md-nav__item> <a href=android/paid/master/storage_2/ class=md-nav__link> 13 | 存储优化(中):如何优化数据存储? </a> </li> <li class=md-nav__item> <a href=android/paid/master/storage_3/ class=md-nav__link> 14 | 存储优化(下):数据库SQLite的使用和优化 </a> </li> <li class=md-nav__item> <a href=android/paid/master/network_1/ class=md-nav__link> 15 | 网络优化(上):移动开发工程师必备的网络优化知识 </a> </li> <li class=md-nav__item> <a href=android/paid/master/network_2/ class=md-nav__link> 16 | 网络优化(中):复杂多变的移动网络该如何优化? </a> </li> <li class=md-nav__item> <a href=android/paid/master/network_3/ class=md-nav__link> 17 | 网络优化(下):大数据下网络该如何监控? </a> </li> <li class=md-nav__item> <a href=android/paid/master/battery_1/ class=md-nav__link> 18 | 耗电优化(上):从电量优化的演进看耗电分析 </a> </li> <li class=md-nav__item> <a href=android/paid/master/battery_2/ class=md-nav__link> 19 | 耗电优化(下):耗电的优化方法与线上监控 </a> </li> <li class=md-nav__item> <a href=android/paid/master/ui_1/ class=md-nav__link> 20 | UI 优化(上):UI 渲染的几个关键概念 </a> </li> <li class=md-nav__item> <a href=android/paid/master/ui_2/ class=md-nav__link> 21 | UI 优化(下):如何优化 UI 渲染? </a> </li> <li class=md-nav__item> <a href=android/paid/master/package_1/ class=md-nav__link> 22 | 包体积优化(上):如何减少安装包大小? </a> </li> <li class=md-nav__item> <a href=android/paid/master/package_2/ class=md-nav__link> 23 | 包体积优化(下):资源优化的进阶实践 </a> </li> <li class=md-nav__item> <a href=android/paid/master/compile/ class=md-nav__link> 26 | 关于编译,你需要了解什么? </a> </li> <li class=md-nav__item> <a href=android/paid/master/bytecode/ class=md-nav__link> 27 | 编译插桩的三种方法:AspectJ、ASM、ReDex </a> </li> <li class=md-nav__item> <a href=android/paid/master/native_hook/ class=md-nav__link> 35 | Native Hook 技术,天使还是魔鬼? </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-3 type=checkbox id=nav-1-3> <label class=md-nav__link for=nav-1-3> Framework系列 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Framework系列 data-md-level=2> <label class=md-nav__title for=nav-1-3> <span class="md-nav__icon md-icon"></span> Framework系列 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=android/framework/Android%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%281%29/ class=md-nav__link> Activity </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%282%29/ class=md-nav__link> Service </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%283%29/ class=md-nav__link> Broadcasts </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%284%29/ class=md-nav__link> Content Providers与Fragment </a> </li> <li class=md-nav__item> <a href=android/framework/IPC%E6%9C%BA%E5%88%B6/ class=md-nav__link> IPC机制 </a> </li> <li class=md-nav__item> <a href=android/framework/View%E7%9A%84%E4%BA%8B%E4%BB%B6%E4%BD%93%E7%B3%BB/ class=md-nav__link> View的事件体系 </a> </li> <li class=md-nav__item> <a href=android/framework/View%E7%9A%84%E7%BB%98%E5%88%B6%E5%8E%9F%E7%90%86/ class=md-nav__link> View的绘制原理 </a> </li> <li class=md-nav__item> <a href=android/framework/RemoteViews/ class=md-nav__link> RemoteViews </a> </li> <li class=md-nav__item> <a href=android/framework/Drawable/ class=md-nav__link> Android中的Drawable资源 </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E5%8A%A8%E7%94%BB/ class=md-nav__link> Android动画 </a> </li> <li class=md-nav__item> <a href=android/framework/Window%E4%B8%8EWindowManager/ class=md-nav__link> Window与WindowManager </a> </li> <li class=md-nav__item> <a href=android/framework/%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%E5%90%AF%E5%8A%A8%E8%BF%87%E7%A8%8B/ class=md-nav__link> 四大组件启动过程 </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6/ class=md-nav__link> Android消息机制 </a> </li> <li class=md-nav__item> <a href=android/framework/Android%E7%BA%BF%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B%E6%B1%A0/ class=md-nav__link> Android线程与线程池 </a> </li> <li class=md-nav__item> <a href=android/framework/Bitmap%E7%9A%84%E7%BC%93%E5%AD%98%E4%B8%8E%E5%8A%A0%E8%BD%BD/ class=md-nav__link> Bitmap的缓存与加载 </a> </li> <li class=md-nav__item> <a href=android/framework/JNI%E4%B8%8ENDK/ class=md-nav__link> JNI与NDK编程简介 </a> </li> <li class=md-nav__item> <a href=android/framework/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/ class=md-nav__link> Android性能优化 </a> </li> <li class=md-nav__item> <a href=android/framework/binder1-mediaservice/ class=md-nav__link> Binder深入理解——以MediaService为例 </a> </li> <li class=md-nav__item> <a href=android/framework/binder2/ class=md-nav__link> Binder深入理解——罗老师系列 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-4 type=checkbox id=nav-1-4> <label class=md-nav__link for=nav-1-4> 日常记录 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=日常记录 data-md-level=2> <label class=md-nav__title for=nav-1-4> <span class="md-nav__icon md-icon"></span> 日常记录 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=android/other/annotation/ class=md-nav__link> 注解的定义及解析 </a> </li> <li class=md-nav__item> <a href=android/other/best_throttle_in_mvvm/ class=md-nav__link> 这可能是MVVM中最优雅的按键防抖方案 </a> </li> <li class=md-nav__item> <a href=android/other/android-jenkins/ class=md-nav__link> Jenkins for android </a> </li> <li class=md-nav__item> <a href=android/other/SystemProrities/ class=md-nav__link> 普通Android程序使用SystemProrities </a> </li> <li class=md-nav__item> <a href=android/other/recyclerview-cache/ class=md-nav__link> ListView、RecyclerView缓存策略解析 </a> </li> <li class=md-nav__item> <a href=android/other/recyclerview-item-docoration/ class=md-nav__link> RecyclerView高级特性——ItemDecoration </a> </li> <li class=md-nav__item> <a href=android/other/recyclerview-others/ class=md-nav__link> RecyclerView的一些使用细节 </a> </li> <li class=md-nav__item> <a href=android/other/RecyclerView-Sort%26Delete/ class=md-nav__link> RecyclerView高级特性——拖拽排序以及滑动删除 </a> </li> <li class=md-nav__item> <a href=android/other/FAB-Behavior/ class=md-nav__link> FloatingActionButton上滑隐藏下滑显示 </a> </li> <li class=md-nav__item> <a href=android/other/nestedscrolling/ class=md-nav__link> NestedScrolling机制 </a> </li> <li class=md-nav__item> <a href=android/other/porterduff/ class=md-nav__link> 使用Porter-Duff合成数字图像 </a> </li> <li class=md-nav__item> <a href=android/other/runtime/ class=md-nav__link> Android Runtime </a> </li> <li class=md-nav__item> <a href=android/other/android_alias/ class=md-nav__link> Android马甲包的那些事儿 </a> </li> <li class=md-nav__item> <a href=android/other/Android-Development-Tool/ class=md-nav__link> Android神兵利器 </a> </li> <li class=md-nav__item> <a href=android/other/FileProvider/ class=md-nav__link> FileProvider </a> </li> <li class=md-nav__item> <a href=android/other/Android%E5%88%A4%E6%96%AD%E5%AF%BC%E8%88%AA%E6%A0%8F%E9%AB%98%E5%BA%A6/ class=md-nav__link> Android判断虚拟按键(导航栏)显示与否、高度以及获取屏幕实际高度 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E5%9B%BE%E7%89%87%E9%80%89%E6%8B%A9%E5%99%A8/ class=md-nav__link> Android图片选择器 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E5%BA%95%E9%83%A8%E5%AF%BC%E8%88%AA%E6%A0%8F%E6%A1%86%E6%9E%B6/ class=md-nav__link> Android原生底部导航栏 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E6%90%9C%E7%B4%A2%E6%A0%8F%E7%9A%84%E5%AE%9E%E7%8E%B0/ class=md-nav__link> Android搜索栏的实现 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E6%9A%82%E5%81%9C%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE%E5%99%A8%E7%9A%84%E6%92%AD%E6%94%BE/ class=md-nav__link> Android暂停酷狗、网易云音乐等音乐播放器的播放 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E6%BB%91%E5%8A%A8%E8%BF%94%E5%9B%9E%E5%AE%9E%E8%B7%B5/ class=md-nav__link> Android滑动返回实践 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E7%A8%8B%E5%BA%8F%E5%8F%8D%E7%BC%96%E8%AF%91/ class=md-nav__link> MacOS下Android程序反编译 </a> </li> <li class=md-nav__item> <a href=android/other/Android%E9%80%9A%E8%AE%AF%E5%BD%95%E5%BF%AB%E9%80%9F%E8%AF%BB%E5%8F%96/ class=md-nav__link> Android通讯录快速读取 </a> </li> <li class=md-nav__item> <a href=android/other/soft-keyboard-in-app/ class=md-nav__link> App内自定义软键盘 </a> </li> <li class=md-nav__item> <a href=android/other/%E8%85%BE%E8%AE%AFX5%E5%86%85%E6%A0%B8%E5%85%A5%E5%9D%91%E6%8C%87%E5%8D%97/ class=md-nav__link> 腾讯TBS X5浏览器内核入坑指南 </a> </li> <li class=md-nav__item> <a href=android/other/%E7%90%90%E7%A2%8E%E7%9F%A5%E8%AF%86%E7%82%B9/ class=md-nav__link> 琐碎知识点 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-5 type=checkbox id=nav-1-5> <label class=md-nav__link for=nav-1-5> 其他 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=其他 data-md-level=2> <label class=md-nav__title for=nav-1-5> <span class="md-nav__icon md-icon"></span> 其他 </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-1-5-1 type=checkbox id=nav-1-5-1> <label class=md-nav__link for=nav-1-5-1> 某些问题索引 <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=某些问题索引 data-md-level=3> <label class=md-nav__title for=nav-1-5-1> <span class="md-nav__icon md-icon"></span> 某些问题索引 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=android/paid/zsxq/zsxq_index/ class=md-nav__link> 某圈问题索引 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week1-synchronized/ class=md-nav__link> 理解Java中synchronized关键词 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week2-service/ class=md-nav__link> 理解Service </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week3-activity/ class=md-nav__link> 理解Activity的启动模式 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week4-startActivityForResult/ class=md-nav__link> 关于startActivityForResult </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week5-view/ class=md-nav__link> 关于View的知识 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week6-gradle/ class=md-nav__link> 关于Gradle的知识 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week7-serialization/ class=md-nav__link> 关于序列化的知识 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week10-classloader/ class=md-nav__link> Android中的ClassLoader </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week11-binder/ class=md-nav__link> Binder简介 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week12-retrofit-okhttp/ class=md-nav__link> OkHttp和Retrofit的作用以及两者之间的联系 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week14-jvm-gc/ class=md-nav__link> JVM中垃圾回收策略 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week16-keep-app-alive/ class=md-nav__link> 进程保活 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week17-android-components/ class=md-nav__link> 四大组件的作用以及多进程 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week20-network-protocol/ class=md-nav__link> 网络协议 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week21-mvc%26mvp%26mvvm/ class=md-nav__link> MVC、MVP和MVVM </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week22-android-studio-build/ class=md-nav__link> Android Studio build过程 </a> </li> <li class=md-nav__item> <a href=android/paid/zsxq/week23-load-large-bitmap/ class=md-nav__link> 大尺寸图片加载问题 </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-2 type=checkbox id=nav-2> <label class=md-nav__link for=nav-2> Flutter <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Flutter data-md-level=1> <label class=md-nav__title for=nav-2> <span class="md-nav__icon md-icon"></span> Flutter </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=flutter/flutter_first_project_1/ class=md-nav__link> 年轻人的第一个Flutter程序(1) </a> </li> <li class=md-nav__item> <a href=flutter/flutter_first_project_2/ class=md-nav__link> 年轻人的第一个Flutter程序(2) </a> </li> <li class=md-nav__item> <a href=flutter/flutter_first_project_3/ class=md-nav__link> 年轻人的第一个Flutter程序(3) </a> </li> <li class=md-nav__item> <a href=flutter/flutter_first_project_4/ class=md-nav__link> 年轻人的第一个Flutter程序(4) </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-3 type=checkbox id=nav-3> <label class=md-nav__link for=nav-3> LeetCode <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=LeetCode data-md-level=1> <label class=md-nav__title for=nav-3> <span class="md-nav__icon md-icon"></span> LeetCode </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=leetcode/ class=md-nav__link> 算法目录 </a> </li> <li class=md-nav__item> <a href=leetcode/code_interviews_1/ class=md-nav__link> 数据结构、算法和数据操作 </a> </li> <li class=md-nav__item> <a href=leetcode/code_interviews_3/ class=md-nav__link> 高质量的代码 </a> </li> <li class=md-nav__item> <a href=leetcode/code_interviews_4/ class=md-nav__link> 解决问题的思路 </a> </li> <li class=md-nav__item> <a href=leetcode/code_interviews_5/ class=md-nav__link> 优化时间和空间效率 </a> </li> <li class=md-nav__item> <a href=leetcode/code_interviews_6/ class=md-nav__link> 面试中的各项能力 </a> </li> <li class=md-nav__item> <a href=leetcode/array/ class=md-nav__link> Array </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode1-10/ class=md-nav__link> LeetCode(1-10) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode11-20/ class=md-nav__link> LeetCode(11-20) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode21-30/ class=md-nav__link> LeetCode(21-30) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode31-40/ class=md-nav__link> LeetCode(31-40) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode41-50/ class=md-nav__link> LeetCode(41-50) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode51-60/ class=md-nav__link> LeetCode(51-60) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode61-70/ class=md-nav__link> LeetCode(61-70) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode71-80/ class=md-nav__link> LeetCode(71-80) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode81-90/ class=md-nav__link> LeetCode(81-90) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode91-100/ class=md-nav__link> LeetCode(91-100) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode101-110/ class=md-nav__link> LeetCode(101-110) </a> </li> <li class=md-nav__item> <a href=leetcode/leetcode111-120/ class=md-nav__link> LeetCode(111-120) </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4 type=checkbox id=nav-4> <label class=md-nav__link for=nav-4> Books <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Books data-md-level=1> <label class=md-nav__title for=nav-4> <span class="md-nav__icon md-icon"></span> Books </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4-1 type=checkbox id=nav-4-1> <label class=md-nav__link for=nav-4-1> Design Pattern <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label="Design Pattern" data-md-level=2> <label class=md-nav__title for=nav-4-1> <span class="md-nav__icon md-icon"></span> Design Pattern </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=design-pattern/design-pattern/ class=md-nav__link> 设计模式概述 </a> </li> <li class=md-nav__item> <a href=design-pattern/design-principle/ class=md-nav__link> 面向对象的六大原则 </a> </li> <li class=md-nav__item> <a href=design-pattern/singleton/ class=md-nav__link> 单例模式(Singleton) </a> </li> <li class=md-nav__item> <a href=design-pattern/builder/ class=md-nav__link> 建造者模式(Builder) </a> </li> <li class=md-nav__item> <a href=design-pattern/prototype/ class=md-nav__link> 原型模式(Prototype) </a> </li> <li class=md-nav__item> <a href=design-pattern/factory-method/ class=md-nav__link> 工厂方法模式(Factory method) </a> </li> <li class=md-nav__item> <a href=design-pattern/abstract-factory/ class=md-nav__link> 抽象工厂模式(Abstract factory) </a> </li> <li class=md-nav__item> <a href=design-pattern/proxy/ class=md-nav__link> 代理模式(Proxy) </a> </li> <li class=md-nav__item> <a href=design-pattern/composite/ class=md-nav__link> 组合模式(Composite) </a> </li> <li class=md-nav__item> <a href=design-pattern/adapter/ class=md-nav__link> 适配器模式(Adapter) </a> </li> <li class=md-nav__item> <a href=design-pattern/decorator/ class=md-nav__link> 装饰模式(Decorator) </a> </li> <li class=md-nav__item> <a href=design-pattern/flyweight/ class=md-nav__link> 享元模式(Flyweight) </a> </li> <li class=md-nav__item> <a href=design-pattern/facade/ class=md-nav__link> 外观模式(Facade) </a> </li> <li class=md-nav__item> <a href=design-pattern/bridge/ class=md-nav__link> 桥接模式(Bridge) </a> </li> <li class=md-nav__item> <a href=design-pattern/strategy/ class=md-nav__link> 策略模式(Strategy) </a> </li> <li class=md-nav__item> <a href=design-pattern/state/ class=md-nav__link> 状态模式(State) </a> </li> <li class=md-nav__item> <a href=design-pattern/chain-of-responsibility/ class=md-nav__link> 责任链模式(Chain of responsibility) </a> </li> <li class=md-nav__item> <a href=design-pattern/interpreter/ class=md-nav__link> 解释器模式(Interpreter) </a> </li> <li class=md-nav__item> <a href=design-pattern/command/ class=md-nav__link> 命令模式(Command) </a> </li> <li class=md-nav__item> <a href=design-pattern/observer/ class=md-nav__link> 观察者模式(Observer) </a> </li> <li class=md-nav__item> <a href=design-pattern/memento/ class=md-nav__link> 备忘录模式(Memento) </a> </li> <li class=md-nav__item> <a href=design-pattern/iterator/ class=md-nav__link> 迭代器模式(Iterator) </a> </li> <li class=md-nav__item> <a href=design-pattern/template-method/ class=md-nav__link> 模版方法模式(Template method) </a> </li> <li class=md-nav__item> <a href=design-pattern/visitor/ class=md-nav__link> 访问者模式(Visitor) </a> </li> <li class=md-nav__item> <a href=design-pattern/mediator/ class=md-nav__link> 中介者模式(Mediator) </a> </li> <li class=md-nav__item> <a href=design-pattern/confusing-design-pattern/ class=md-nav__link> 易混淆的设计模式 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4-2 type=checkbox id=nav-4-2> <label class=md-nav__link for=nav-4-2> Effective Java <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label="Effective Java" data-md-level=2> <label class=md-nav__title for=nav-4-2> <span class="md-nav__icon md-icon"></span> Effective Java </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=effective-java/effective-java/ class=md-nav__link> Effective Java概述 </a> </li> <li class=md-nav__item> <a href=effective-java/chapter1/ class=md-nav__link> 创建和销毁对象 </a> </li> <li class=md-nav__item> <a href=effective-java/chapter2/ class=md-nav__link> 对于所有对象都通用的方法 </a> </li> <li class=md-nav__item> <a href=effective-java/chapter3/ class=md-nav__link> 类和接口 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4-3 type=checkbox id=nav-4-3> <label class=md-nav__link for=nav-4-3> JVM <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=JVM data-md-level=2> <label class=md-nav__title for=nav-4-3> <span class="md-nav__icon md-icon"></span> JVM </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=jvm/jvm-content/ class=md-nav__link> 深入理解Java虚拟机 </a> </li> <li class=md-nav__item> <a href=jvm/java-memory-area-oom/ class=md-nav__link> Java内存区域与内存溢出异常 </a> </li> <li class=md-nav__item> <a href=jvm/java-gc/ class=md-nav__link> 垃圾收集器与内存分配策略 </a> </li> <li class=md-nav__item> <a href=jvm/class-struct/ class=md-nav__link> 类文件结构 </a> </li> <li class=md-nav__item> <a href=jvm/load-class/ class=md-nav__link> 虚拟机类加载机制 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4-4 type=checkbox id=nav-4-4> <label class=md-nav__link for=nav-4-4> Java <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Java data-md-level=2> <label class=md-nav__title for=nav-4-4> <span class="md-nav__icon md-icon"></span> Java </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=java/generics-java-kotlin/ class=md-nav__link> Java&Kotlin在泛型方面的区别 </a> </li> <li class=md-nav__item> <a href=java/java-collections/ class=md-nav__link> Java集合总结 </a> </li> <li class=md-nav__item> <a href=java/java-foundation/ class=md-nav__link> Java常见概念 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=nav-4-5 type=checkbox id=nav-4-5> <label class=md-nav__link for=nav-4-5> Refactoring <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Refactoring data-md-level=2> <label class=md-nav__title for=nav-4-5> <span class="md-nav__icon md-icon"></span> Refactoring </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=refactoring/refactoring/ class=md-nav__link> 重构:改善既有代码的设计 </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=toc hidden> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label=目录> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> 目录 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=#banner class=md-nav__link> 这是一个小Banner位 </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content> <article class="md-content__inner md-typeset"> <h1 id=yoreks-blog>Yorek's Blog<a class=headerlink href=#yoreks-blog title="Permanent link">¶</a></h1> <p>Tips:</p> <ol> <li>切换最上方Tab进行浏览</li> <li>搜索挺好使的,就是键入首字时会卡顿一会儿,请喝杯茶</li> </ol> <p>Good artists copy; Great artists steal.</p> <h2 id=banner>这是一个小Banner位<a class=headerlink href=#banner title="Permanent link">¶</a></h2> <p>➡️➡️➡️ 重磅上新:<a href=/android/3rd-library/matrix>微信开源APM框架——Matrix源码解析</a></p> <hr> <div class=md-source-date> <small> 最后更新: <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">2021年1月25日</span> </small> </div> </article> </div> </div> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-footer-copyright> <div class=md-footer-copyright__highlight> © 2021 Yorek </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-footer-social> <a href=https://github.com/YorekLiu target=_blank rel=noopener title=github.com class=md-footer-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 2A10 10 0 002 12c0 4.42 2.87 8.17 6.84 9.5.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34-.46-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.87 1.52 2.34 1.07 2.91.83.09-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.92 0-1.11.38-2 1.03-2.71-.1-.25-.45-1.29.1-2.64 0 0 .84-.27 2.75 1.02.79-.22 1.65-.33 2.5-.33.85 0 1.71.11 2.5.33 1.91-1.29 2.75-1.02 2.75-1.02.55 1.35.2 2.39.1 2.64.65.71 1.03 1.6 1.03 2.71 0 3.82-2.34 4.66-4.57 4.91.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0012 2z"/></svg> </a> <a [email protected] target=_blank rel=noopener title class=md-footer-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 8l-8 5-8-5V6l8 5 8-5m0-2H4c-1.11 0-2 .89-2 2v12a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2z"/></svg> </a> </div> </div> </div> </footer> </div> <script src=assets/javascripts/vendor.93c04032.min.js></script> <script src=assets/javascripts/bundle.83e5331e.min.js></script><script id=__lang type=application/json>{"clipboard.copy": "\u590d\u5236", "clipboard.copied": "\u5df2\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\uff0c\\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}</script> <script>
app = initialize({
base: ".",
features: ['navigation.tabs', 'navigation.instant'],
search: Object.assign({
worker: "assets/javascripts/worker/search.8c7e0a7e.min.js"
}, typeof search !== "undefined" && search)
})
</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script> </body> </html>