4.0上 双SD卡嵌套挂载问题

collay 2012-07-17 01:48:31
各位好。
【正题】
最近在4.0上做双SD卡嵌套挂载问题的工作,结果总是出问题,没有头绪,很是郁闷。
原来的挂载配置:
外置sdcard mnt/sdcard
emmc mnt/emmc
要改成:
外置sdcard mnt/sdcard/ext_sd
emmc mnt/sdcard

根据网上的一些关于挂载流程,修改了配置文件和逻辑后,log中显示mount成功,文件管理器中也可以看到相应的内置、外置卡上的文件。但是目前存在3个严重问题(注:修改之前原来的功能都OK。):

1. 一开机就会显示“空白SD卡”的notify消息。
2. 进入settings的“存储管理”界面时settings会挂掉,log显示
07-16 06:58:38.389: E/AndroidRuntime(619): FATAL EXCEPTION: MemoryMeasurement
07-16 06:58:38.389: E/AndroidRuntime(619): java.lang.IllegalArgumentException
07-16 06:58:38.389: E/AndroidRuntime(619): at android.os.StatFs.native_setup(Native Method)
07-16 06:58:38.389: E/AndroidRuntime(619): at android.os.StatFs.<init>(StatFs.java:32)
07-16 06:58:38.389: E/AndroidRuntime(619): at com.android.settings.deviceinfo.StorageMeasurement$MeasurementHandler.measureApproximateStorage(StorageMeasurement.java:395)
在代码中加打印,发现传入的path是合法的字符串,奇怪~~
3. 插线连接到PC机时USB大容量存储器也启动不了,log显示“Device or resource busy”,跟驱动有关?

【补充问题】
1. 内置外置SD卡的挂载/卸载,是要严格遵循“内置->外置”/“外置->内置”的顺序,是吧?
2. 同级目录上挂载和这种嵌套目录的挂载,有何区别?因为总觉得只是简单修改了一个挂载点,怎么会引发这么多问题呢?

烦请高手指点一二。
期待回复。
感谢!
...全文
518 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jpliua2 2013-04-01
  • 打赏
  • 举报
回复
我也遇到这样的问题啊 求高手指点 W/dalvikvm( 2405): threadid=14: thread exiting with uncaught exception (group=0x40cae1f8) E/AndroidRuntime( 2405): FATAL EXCEPTION: MemoryMeasurement E/AndroidRuntime( 2405): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. E/AndroidRuntime( 2405): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4066) E/AndroidRuntime( 2405): at android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:725) E/AndroidRuntime( 2405): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:774) E/AndroidRuntime( 2405): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4005) E/AndroidRuntime( 2405): at android.view.View.invalidate(View.java:8576) E/AndroidRuntime( 2405): at android.view.View.invalidate(View.java:8527) E/AndroidRuntime( 2405): at android.widget.TextView.checkForRelayout(TextView.java:6814) E/AndroidRuntime( 2405): at android.widget.TextView.setText(TextView.java:3308) E/AndroidRuntime( 2405): at android.widget.TextView.setText(TextView.java:3164) E/AndroidRuntime( 2405): at android.widget.TextView.setText(TextView.java:3139) E/AndroidRuntime( 2405): at com.android.settings.applications.RunningProcessesView.refreshUi(RunningProcessesView.java:337) E/AndroidRuntime( 2405): at com.android.settings.applications.RunningProcessesView.onRefreshUi(RunningProcessesView.java:477) E/AndroidRuntime( 2405): at com.android.settings.applications.RunningState$1.handleMessage(RunningState.java:196) E/AndroidRuntime( 2405): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime( 2405): at android.os.Looper.loop(Looper.java:137) E/AndroidRuntime( 2405): at android.os.HandlerThread.run(HandlerThread.java:60)
gujinf2008 2012-08-28
  • 打赏
  • 举报
回复
我遇到的问题跟你的不太一样,我遇到的是空间大小不对的问题,measureSizesOfMisc()直接返回了,根本就没有计算mnt/sdcard目录下文件占用的空间,造成显示不准确,还在郁闷中,不知道该如何解决。
collay 2012-07-18
  • 打赏
  • 举报
回复
不会吧,就这么冷清啊~~~
collay 2012-07-17
  • 打赏
  • 举报
回复
嗯,这个要求是有点古怪,不过听同事说之前在2.3上实现过类似功能。
最初是想将外置SD卡作为内置卡的一个子目录(在文件管理器中可以看到这种层级关系),不知道android上目录的概念是否与挂载点有对应关系?
还请指点。
谢谢。
念茜 2012-07-17
  • 打赏
  • 举报
回复
mnt/sdcard, mnt/sdcard/ext_sd 这样两个挂载点,1.如果后者先挂载,前者挂载后,后者的节点应该就被覆盖了;2.如果前者先挂载,后者有可能找不到挂载点,权限或者相同文件名错误。
不知我想的对不对,为什么不能做成同级的呢?
collay 2012-07-17
  • 打赏
  • 举报
回复
不会吧,androider们上班都累了?休息一下,来这里看看吧~~~
collay 2012-07-17
  • 打赏
  • 举报
回复
坐等回复~~~

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧