java - 安卓缩略图列表

标签 java android mysql thumbnails air-native-extension

对于我的 flash 应用程序,我需要创建一个“ native 扩展”,这是一个 native android Java 调用。此扩展构建一个包含所有图像文件及其相应缩略图的字符串,并将其返回给 Flash。

我不是 Java 程序员,这是我第一次尝试编写 android 代码。所以经过 2 天的挖掘,我想到了这个:

public String getThumbPaths(Uri uri, ThumbContext ctx) {
    String out = "";
    Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnails(ctx
            .getActivity().getContentResolver(), uri,
            MediaStore.Images.Thumbnails.MINI_KIND, null);


    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {

        String imageId = cursor.getString(cursor
                .getColumnIndex(Thumbnails.IMAGE_ID));

        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor images = ctx.getActivity().managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                filePathColumn, MediaStore.Images.Media._ID + "=?",
                new String[] { imageId }, null);

        String filePath = "";

        if (images != null && images.moveToFirst()) {
            filePath = images.getString(images.getColumnIndex(filePathColumn[0]));
        }

        out += cursor.getString(1) + ";" + filePath+";";

    }

    return out;
}

和电话

ThumbContext ctx = (ThumbContext) context;
Uri uri = MediaStore.Images.Thumbnails.getContentUri("external"); // content://media/external/images/thumbnails
String paths = getThumbPaths(uri, ctx);

一切正常,除了速度。我不知道发生这种情况是因为 Flash-Java-Flash 调用还是上面的代码,我无法检查,因为编译发生在 Flash 内部。

所以我的问题是:我可以加速这段代码吗?也许在“for”循环内没有第二个光标的情况下执行此操作?

最佳答案

您可以进行一些小的优化。

  1. cursor.getColumnIndex(Thumbnails.IMAGE_ID) 将为游标的每次迭代返回相同的值。将其分配给循环外的变量。
  2. String[] filePathColumn 在每次迭代中都被赋予相同的值(并在每次迭代中创建一个新对象)。将其移出循环。
  3. 对于内部 CursorMediaStore.Images.Media._ID + "=?" 始终具有相同的值。在循环外:)
  4. 与其将 out 创建为 String 并附加到它,不如考虑使用 java.lang.StringBuilder

关于java - 安卓缩略图列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399969/

相关文章:

mysql - SQL:搜索一列中给定的不允许的字符并替换

java - 如何跟踪在 MySQL 中加载的源文件?

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - Spring MVC - HTTP 405 - 不支持加载静态 CSS 文件的请求方法 'GET'

java - 为首选项编写测试,访问首选项时不断获取 `android.content.res.Resources$NotFoundException`

MySQL计算每个值的平均值和差异?

mysql - 暂时禁用约束

java - 我的方法如何接受任何类型的 Number 作为方法参数? (Java 泛型)

android - android密码字段问题,不隐藏最后输入的字符

Android Honeycomb - 如何在查询文本为空时显示对 SearchView 的建议?