废话少说, 先上两张时序图 , 图片有点大, 建议用新窗口打开或者另存到本地查看
图1: UsbSettings的流程
图2: property属性的触发事件流程
好, 开始分析
从图1开始, 当用户从Setting UI里面点了一下那个MTP的选择框后,引起一系列的操作,
说白了,这里绕那么多个圈, 无非就是想发个消息通知UsbHandler而已, 然后就等待状态更新, 真正干活的就是图2.
这也不复杂,就是为后面更新persist.sys.usb.config这个property组装合适的value, 这个value就是functions这个变量, 纯字符串, 以逗号分割各个功能. 假如只有mtp, 那么functions就是"mtp", 假如adb和mtp都有, 那么function就是"adb,mtp" .
所以从图2步骤1到3都是内部逻辑为了得到更准确的functions的值, 最后执行property_set().