我研究了每个地方但没有任何解决方案。我有一个代码片段,在eclipse的调试模式下运行并正常获取总文件大小。但是当我运行项目时,sizeOfDownloadingFile的值只返回-1。请帮帮我,我用Android 22编译,提前谢谢。
long id = downloadManager.enqueue(request);
Cursor cursor = downloadManager.query(new DownloadManager.Query()
.setFilterById(id));
if (!cursor.moveToFirst()) {
Log.v("DownloadManagerService", "download list is empty");
return;
}
int sizeOfDownloadingFile = 0;
sizeOfDownloadingFile = cursor.getInt(cursor
.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
Log.d("DownloadManagerService",
"File size of film " + mFilm.getmTitle() + " is "
+ sizeOfDownloadingFile);
答案 0 :(得分:3)
如果您在主线程中调用代码,请尝试:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
check here size of your downloading file
}
},500);
当您处于调试模式下载程序时,可以开始下载并且您具有有效值,但是如果您运行app normaly,则下载程序必须连接到服务器和doanload文件,这有时会比执行代码花费更多时间。
答案 1 :(得分:1)
我发现了问题,这是由方法setFilterById()处理引起的。在我将代码更改为此后,我现在可以得到正确的结果,但我推荐Adam的代码:
define(['jquery'], function($) {
$(function() {
$('[my-controller]').each(function(e, t) {
var a = $(t).attr('my-controller');
'undefined' != typeof window[a] && $.isFunction(window[a]) ? window[a]($) : '';
});
});