我想創建類似「PDF查看器應用程序」的東西。應用程序將搜索用戶選擇的位置中的所有* .pdf文件。用戶可以通過此功能選擇這個文件夾:DocumentFile非常慢
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE);
然後我得到DocumentFile(文件夾):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == getActivity().RESULT_OK && requestCode == REQUEST_CODE) {
Uri uriTree = data.getData();
DocumentFile documentFile = DocumentFile.fromTreeUri(getActivity(), uriTree);
//rest of code here
}
}
爲什麼我選擇了選擇文件夾的這種方法嗎?因爲我希望能夠選擇輔助存儲(您知道,在Android> = 5.0中,您不能使用Java.io.file訪問輔助存儲)。
好了,我得到的文件夾中所有的* .pdf爲DocumentFile。然後我打電話:
for(DocumentFile file: documentFile.listFiles()){
String fileNameToDisplay = file.getName();
}
這是很慢。當所選文件夾中有〜600個文件時,需要將近30秒。爲了證明這一點,我選擇了外部存儲(不是輔助存儲)的目錄,然後嘗試了兩種解決方案:DocumentFile和File。 文件版本看起來像:
File f = new File(Environment.getExternalStorageDirectory()+"/pdffiles");
for(File file: f.listFiles()){
String fileNameToDisplay = file.getName();
}
}
第二個版本的作品約500倍的速度更快。幾乎沒有時間顯示列表視圖上的所有文件。爲什麼DocumentFile這麼慢?
'爲什麼DocumentFile這麼慢?'。錯誤的問題。你應該問'我應該用什麼來代替DocumentFile?'。那麼只有當你想要更快的東西;-)。 – greenapps
DocumentFile的listFiles()已經比文件的慢。但DocumentFile.getName()非常慢。 Soooo slooow。 – greenapps
是啊,我應該問這樣的,但現在我不能改變它:( – user2551317