preface

While going home for the Spring Festival, I would like to take some time to write a summary of my study in 2019. Although I have submitted my work summary in the unit, I think they are both summaries, but their nature is a little different. One is a summary of my work and the other is a summary of my private self-study.

At the beginning of this year, I was fortunate to participate in the research and development of the company’s core project. Finally, I independently developed the VOIP communication SDK on the Android terminal. Through this project, I learned C/C++, NDK, audio and video coding and decoding and other knowledge. The SDK is now integrated and used by multiple partners and serves government departments.

The development of this SDK enabled me to get in touch with audio and video, so far I have been unable to extricate myself from the direction of audio and video learning, and now I have become a half-skilled audio and video engineer.

Another important thing for me this year is technical article writing. During this year, I have shared nearly 100 series articles on the Gold digging platform, which is quite satisfactory. This is just the beginning and sharing will continue.

Here is a summary of this year’s learning results, but also for everyone to view.

The nuggets writing

The series will be updated from time to time

Flutter series

  • Why did Google start with Flutter

  • Dart (variables, built-in types, functions, operators, flow control statements)

  • Flutter (2) Dart language basics (Exceptions, classes, mixins, generics, libraries)

  • Flutter (3) Dart language basics (Asynchronous, generator, isolation, metadata, annotations)

  • Introduce the basic Widgets and Material Components Widgets of Flutter

Data structures and algorithms

  • Learn data structures and algorithms from scratch (I) bubbling and selection sorting
  • Learn data structure and algorithm from scratch (2) linear list chain storage structure
  • Learn data structure and algorithm from scratch (3) stack and stack application
  • Learn data structures and algorithms from scratch (four) hash table ideas and binary tree entry
  • Learn data structure and algorithm from scratch (5) divide-and-conquer (binary search, quicksort, merge sort)
  • Learn data structure and algorithm from scratch (6) binary sorting tree
  • Learn data structure and algorithm from scratch (7) Huffman tree and AVL tree

Java source code analysis

  • ArrayList JDK 1.8 source code analysis
  • LinkedList JDK 1.8 source code analysis
  • Source code analysis (three) Stack source analysis

Android source code analysis

  • Analyze LayoutInflater from the setContentView entry
  • What do registerReceiver, sendBroadcast, and onReceive systems do for analyzing broadcast?
  • Android 8.0 source code analysis (a) SystemServer process started
  • Android 8.0 source code analysis (ii) Launcher
  • Android 8.0 source code analysis (three) application process creation to the application startup process
  • Android 8.0 source code analysis (four) Activity start
  • Android 8.0 source code analysis (5) Service startup
  • Android 8.0 source code analysis (6) BroadcastReceiver launch
  • Android 8.0 source code analysis (seven) ContentProvider start
  • ActivityManagerService
  • Android 8.0 source code analysis (nine) WindowManager
  • Android 8.0 source code analysis (ten) WindowManagerService window management

Third party popular framework source code analysis

  • Android picture loading framework Glide 4.9.0 (a) From the perspective of source code analysis Glide execution process
  • Android Image loading framework Glide 4.9.0 (2) Analysis of Glide cache strategy from the perspective of source code
  • From the perspective of source code analysis of Rxjava2 basic execution process, thread switching principle
  • OKHttp3 (a) synchronous and asynchronous execution process is analyzed from the perspective of source code
  • Analyze the charm of OKHttp3 (ii) interceptor from the source point of view
  • OKHttp3 (iii) cache strategy is analyzed from a source code perspective
  • Analyze Retrofit network requests from the source point of view, including RxJava + Retrofit + OKhttp request explanation

Performance optimization series

  • Performance optimization (I)APP startup optimization (dare not say seconds, but the final optimization is really less than 1s)
  • Performance optimization (2) UI rendering optimization
  • After reading this article, fix at least 90% of the memory exceptions in your APP
  • Ubuntu compiles libJPEG image compression library perfectly, comparable to wechat image compression algorithm
  • Performance optimization (five) long graph optimization, imitated micro-blog loading long graph mode
  • Performance optimization (VI) The boss asks you about the power consumption of our APP. After reading this article, we can not only know but also make corresponding optimization.
  • Performance optimization (seven) APK reinforced Dex encryption and decryption, decompilation can not see the main project code.
  • Performance optimization (8) Dynamic replacement Application for APK hardening
  • Performance optimization (ix) Exploring the thermal repair principle of APP stability
  • Performance optimization (x) Implementation of the process of APP running continuously
  • Performance optimization (XI) ProGuard for code and resource compression
  • APK extreme compression (the more resources, the more significant the effect)
  • With BreakPad, native crashes are no longer feared

Mobile Architect series

  • First step, learn to draw various UML diagrams.
  • Mobile architecture (two) Android Handler architecture analysis, and to achieve their own simple version of the Handler framework
  • Mobile architecture (iii) AMS source code analysis
  • EventBus 3.1.1 source code analysis and implementation of their own lightweight EventBus framework, according to the TAG send and receive events.
  • Mobile architecture (5) Only operations on Java beans can be done to persist data.
  • Mobile architecture (6) Lightweight inter-process communication framework design
  • Mobile architecture (7) componentized framework model that everyone can understand
  • Mobile architecture (8) everyone can understand the dynamic loading plug-in technology model implementation

Design patterns

  • Learn the six principles of object orientation through code examples
  • Design pattern (a) through the theory + code examples + Android source singleton pattern to learn singleton
  • Design pattern (two) combined with code example + Android source Builder to learn the Builder pattern
  • Design mode (3) prototype mode
  • Design mode (4) Factory method mode
  • Design pattern (5) Abstract factory pattern
  • Design mode (vi) Strategy mode
  • Design mode (7) State mode
  • Design mode (8) Responsibility chain mode
  • Design mode (ix) Observer mode
  • Design mode (10) Memo mode
  • Design pattern (11) Iterator pattern
  • Design pattern (12) Template method pattern
  • Design Pattern (13) Visitor pattern
  • Design pattern (14) Intermediary pattern
  • Design mode (15) agent mode
  • Design mode (16) combination mode
  • Design mode (17) Adapter, decoration, share mode
  • Design mode (18) appearance, bridge mode

Advanced UI series

  • You need to know the basics of View
  • Understand the Android 8.0 View touch event distribution mechanism
  • Understand how View works and take you to the custom View door
  • Paint rendering/filter/Xfermode
  • By the end of this article Canvas you should be able to
  • Advanced UI growth path (6) PathMeasure makes path animation
  • Advanced UI growth path (seven) SVG base use + draw map of China

Audio and video

  • YUV format video stream is transmitted between audio and video processes to solve the problem that Camera cannot be called at the same time
  • Audio and video learning (a) C language introduction
  • Audio and video learning (2) C++ language introduction
  • Audio and video learning (three) JNI from entry to master
  • Audio and video learning (four) cross – compile dynamic library, static library of the entry study
  • Audio and Video learning (5) Getting started with Shell scripts
  • Audio and Video learning (vi) FFmpeg 4.2.2 cross-compilation

The open source project

  • Hot repair DexEncryptionDecryption

  • Image compression LIBJPEG_SAMPLE

  • The process keeps KeepAlive

  • Java/Native exception catch YKCrash

  • Pluggable YKPluginAPK

  • YUV play YUVPlay

  • Anti-weibo long picture loading long_picture_view

  • Interprocess communication YKProBus

  • EventBus YEventBus

  • Big data transfer between processes MemoryFileWriteBytesYUV

  • Kotlin GitHub App

Set up a personal blog

I have a Blog of my own

  • www.devyk.top/

In the future

At the end of 2018 I had no idea what the future would look like for Android to continue. Switching to Java or the front end was considered during this time. However, I got in touch with audio and video development at the beginning of 2019, and was deeply attracted by its charm. Now I have a clear direction, and I believe that audio and video technology will be more and more popular in the future. I will firm up my goal and vigorously conduct in-depth research in the two directions of audio and video and architecture.

Technical articles in the direction of audio and video should be the main content to share in the future.

Firm target, go forward bravely, come on!!