【发布时间】:2016-01-03 12:30:58
【问题描述】:
我有一个启动电子邮件意图的活动,传递指向本地文件的 Uri 对象数组列表。这适用于文件数量较少的情况,例如3 或 10。但是,当我有 1000 多个文件(总大小为 14 mb)时,活动挂起(这是预期的,很多 i/o),但它有时会无限期挂起,或者当它确实返回意图时没有'启动。
以下代码(由 AsyncTask 调用)创建 Uri 的数组列表并启动电子邮件意图:
private Intent createEmailAndSend(List<FilePath> paths) {
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
ArrayList<Uri> fileUriList = new ArrayList<>();
for (FilePath filePath : paths) {
File file = new File(filePath.getPath());
fileUriList.add(Uri.fromFile(file));
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, fileUriList);
startActivity(intent);
}
测试:
- Genymotion、Android Studio 2 Beta 模拟器、Nexus 7 和 Nexus 6p
- Android:至少 19(Kitkat)并且目标是 Kitkat
有人知道我做错了什么吗?
【问题讨论】: