Android 在扫描U盘解析图片缩略图时,拔出U盘导致崩溃

在Android设备中,扫描U盘解析图片缩略图时若拔出U盘,可能导致应用崩溃。崩溃原因在于U盘操作过程中,系统kill了占用文件的进程。解决方法包括屏蔽信号、释放资源或在独立进程中处理。具体解决策略涉及JNI重写信号处理、避免反射操作、确保文件占用及时关闭等。
摘要由CSDN通过智能技术生成

Android 在扫描U盘解析图片缩略图时,拔出U盘导致崩溃

  在出现该问题时,发现日志中显示processkiller:....相关信息,然后出现了进程被杀死的日志。

E/ProcessKiller( 2176): Process com.android.xxx (2866) has open file
xxxxxxxx
W/ProcessKiller( 2176): Sending SIGHUP to process 2866
I/ActivityManager( 2250): Process com.android.xxx(pid 2866) has died.

网上查询后发现是由于正在对U盘中的文件操作时,出,拔出U盘的时候,因为占用了U盘中的Test.apk文件,导致process被系统kill了,所以app就挂了。
那怎么解决这个问题呢?
有三种方法:
1.屏蔽信号 sighup,kill信号,自己接受信号并且自己来处理,默认情况下,接受了该信号,就会kill掉调用他的进程
2.找到还有哪里占用资源的地方,统统释放掉。
3.将该部分处理逻辑放到另外一个不相关的进程中去,这样,即使其进程被杀也不会影响到app的使用。
## 屏蔽信号 ##
系统层修改了vold类,当接受到这个信号以后不去进行处理kill的指令,或者屏蔽了我们项目的进程,可以达到效果,但是为了可移植性,添加其他方案,思路如下:
1.写JNI去重写该信号,自己接管这个信号,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值