Android9.0 U盘扫描媒体库解析与扫描速度优化

一、USB扫描时序图

Android9.0 U盘扫描媒体库解析与扫描速度优化_第1张图片

二、扫描流程解析

1、MediaScannerReceiver 分析

文件路径:packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver

主要接收U盘挂载、卸载、扫描等广播信息,收到广播后启动MediaScannerService

scan(context, MediaProvider.INTERNAL_VOLUME); //扫描内部存储
scan(context, MediaProvider.EXTERNAL_VOLUME);//扫描外部存储

private void scan(Context context, String volume) {
    Bundle args = new Bundle();
    //添加扫描卷名
    args.putString("volume", volume);
    context.startService(
            new Intent(context, MediaScannerService.class).putExtras(args));
}

2、MediaScannerService分析

文件路径:packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerService

1)在MediaScannerService中创建子线程,根据Service的生命周期,首先执行onCreate 函数。

你可能感兴趣的:(Android,USB,性能优化)