文章预览
问题回顾 之前处理了一个SDCard格式化的问题,最后定位到是底层的原因,让底层同事排查去了,底层同事排查完,没发现什么问题,最近这个问题又转到我的手里了,于是我又深入看了一下 流程梳理 之前已经梳理过了SDCard格式化的代码流程,这里只贴一个简单的流程图 在Settings -> Storage页面点击SDCard格式化,最终请求vold完成格式化。格式化完毕后,再直接访问UnixFileSystem去获取磁盘大小,得到的结果为0。 这里贴一下访问UnixFileSystem获取磁盘大小的核心代码,对上层开发有参考作用,位于 libcore/ojluni/src/main/native/UnixFileSystem_md.c: # define statvfs64 statvfs // Android-changed: Name changed because of added thread policy check JNIEXPORT jlong JNICALL Java_java_io_UnixFileSystem_getSpace0 (JNIEnv *env, jobject this , jobject file, jint t) { jlong rv = 0L ; WITH_FIELD_PLATFO
………………………………