[开发时随手笔记]关于 ProgressMonitorInputStream 不弹出进度条 的 注意事项

来源:互联网 发布:js base64转图片卡住了 编辑:程序博客网 时间:2024/05/22 13:34

 

使用ProgressMonitorInputStream 不能弹出的有下原因:

1.BufferedInputStream的默认 缓存size太大(可以自行定义较小值 解决)

2.不要在EDT(事件分发线程)中使用,会造成SWING卡死, 在新线程中调用

3.如果InputStream 是阻塞流(in.available()返回0) 会响影 ProgressMonitorInputStream 的弹出,

 

 

以上,如果BufferedInputStream缓存太大,那么就不用每次被其包装的ProgressMonitorInputStream类.只读自己的缓存

不调用ProgressMonitorInputStream 的read就不调用read里面的monitor.setProgress 

比方说

下载的文件560字节  BufferedInputStream缓存1024字节 就是说,buffered.read一次就读完了整个文件. 如果想显示进度条,得把buffered size 设560字节以下 如128


或者

让ProgressMonitorInputStream包含BufferedInputStream

而不是 new BufferedInputStream(new ProgressMonitorInputStream(....))

 

原创粉丝点击