在Android上从AWS S3下载文件时,如何提高进度刷新率?

在Android上从AWS S3下载文件时,如何提高进度刷新率?,android,amazon-web-services,amazon-s3,Android,Amazon Web Services,Amazon S3,在我的Android应用程序中,我正在从AWS S3下载一个文件: TransferUtility TransferUtility=TransferUtility.builder() .背景(本) .S3客户端(AmazonS3客户端) .defaultBucket(“我的桶”) .build(); File myFile=新文件(“/path/to/File.ogg”); TransferObserver=transferUtility.download(“file.ogg”,myFile)

在我的Android应用程序中,我正在从AWS S3下载一个文件:


TransferUtility TransferUtility=TransferUtility.builder()
.背景(本)
.S3客户端(AmazonS3客户端)
.defaultBucket(“我的桶”)
.build();
File myFile=新文件(“/path/to/File.ogg”);
TransferObserver=transferUtility.download(“file.ogg”,myFile);
setTransferListener(新的TransferListener()
{
@凌驾
状态已更改的公共void(int id,TransferState)
{
idDernierDownload=id;
Flog.d(“onStateChanged:+id+,“+state”);
}
@凌驾
public void onProgressChanged(int-id、long-bytesCurrent、long-bytesTotal)
{
Flog.d(“id=“+id+”:“+bytesCurrent+”/“+bytesTotal”);
}
@凌驾
公共无效onError(内部id,例外e)
{
Flog.e(“id=“+id+”:Erreur:+e.getMessage());
e、 printStackTrace();
}
});
我的问题是,
onProgressChanged()
大约每2秒调用一次,这是一个很低的速率

那么有没有可能把这个速率提高到每秒3次呢


谢谢。

从这些文档中我可以看出,TransferObserver提供了对状态的访问以及transfer listener的选项。也许您可以从独立线程或等效线程直接查询TransferObserver对象中的状态?@jarmod是的,我尝试了类似的方法,比如计时器每秒调用
TransferObserver.getByTestTransferred()
4次,但它只返回您在
onProgressChanged()
中得到的最后一个值,所以这没用,不幸的是…我明白了,很好你试过了。不幸的是,我没有意识到更细粒度的进展。我刚刚找到的解决方法是在计时器中调用
myFile.length()
,而不是
transferObserver.getByTestTransferred()
。但我仍然对更清洁的解决方案感兴趣,尽管。。。