多线程环境下 java.io.IOException: Mark has been invalidated.

本文探讨了一个在Android应用中使用HTTPURLConnection获取网络资源时遇到的IOException问题,特别是当存在多个线程同时操作该对象时。通过将静态方法改为非静态,并确保每次操作时创建新的对象实例,成功解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bitmap = BitmapFactory.decodeStream(uc.getInputStream()); 12-15 15:25:47.275: W/System.err(2303): java.io.IOException: Mark has been invalidated. 12-15 15:25:47.295: W/System.err(2303): at java.io.BufferedInputStream.reset(BufferedInputStream.java:425) 12-15 15:25:47.335: W/System.err(2303): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 12-15 15:25:47.345: W/System.err(2303): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:505) 12-15 15:25:47.365: W/System.err(2303): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:566) 12-15 15:25:47.385: W/System.err(2303): at org.droid.util.view.BitmapUtils.loadBitmapFromNet(BitmapUtils.java:50) 12-15 15:25:47.395: W/System.err(2303): at org.droid.util.AsyncLoader.doInBackground(AsyncLoader.java:39) 12-15 15:25:47.405: W/System.err(2303): at android.os.AsyncTask$2.call(AsyncTask.java:216) 12-15 15:25:47.425: W/System.err(2303): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:336) 12-15 15:25:47.435: W/System.err(2303): at java.util.concurrent.FutureTask.run(FutureTask.java:168) 12-15 15:25:47.445: W/System.err(2303): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1099) 12-15 15:25:47.465: W/System.err(2303): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:592) 12-15 15:25:47.485: W/System.err(2303): at java.lang.Thread.run(Thread.java:1127)


究其原因 主要是 多个线程操作了 HttpUrlConnection 这个对象。。

解决办法 。 把 static方法改成非static的了。然后每次都重新撞见一个对象 问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值