我正在嘗試跟蹤壓縮進度的進度。 ATM我這樣做是這樣的:跟蹤複製文件的進度
public static void compressGzipTest(final OutputStream os, final File source) throws CompressorException,
IOException
{
final CountingInputStream cis = new CountingInputStream(new FileInputStream(source));
final GzipCompressorOutputStream gzipOut = (GzipCompressorOutputStream) new CompressorStreamFactory()
.createCompressorOutputStream(CompressorStreamFactory.GZIP,os);
new Thread() {
public void run()
{
try
{
long fileSize = source.length();
while (fileSize > cis.getBytesRead())
{
Thread.sleep(1000);
System.out.println(cis.getBytesRead()/(fileSize/100.0));
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}.start();
IOUtils.copy(cis,gzipOut);
}
這工作得很好,但我需要的螺紋,它提供有關不以這種方法來實現進度的反饋,但稱這是(爲了創造東西的時候就像android設備上的進度條)。所以這更像是一個架構問題。任何想法,關於如何解決?
我解決它的時刻通過傳遞InputStream作爲參數。但是我是否正確地做到了這一點,publishProgress/onProgressUpdate會默認處理我方法的進度,還是必須實施如何接收進度反饋? – JohnPlata
請看我編輯的答案,在那裏你可以看到一個關於它的例子。 – R4ng3LII