Disclaimer: This article is a blogger original article, shall not be reproduced without the bloggers allowed. https://blog.csdn.net/this_is_id/article/details/87687051
Not here in detail, only record, if you are interested, check out the source code