Some introduction:
https://www.jianshu.com/p/b7de8e4cf217
https://blog.csdn.net/javaloveiphone/article/details/52439613