【问题标题】:Android thumbnail listAndroid 缩略图列表
【发布时间】:2012-11-04 04:44:10
【问题描述】:

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

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

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”循环中没有第二个光标的情况下这样做?

【问题讨论】:

    标签: java android mysql thumbnails air-native-extension


    【解决方案1】:

    您可以进行一些优化。

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

    【讨论】:

    • 谢谢大卫! :) 我一定会将这些位添加到代码中!
    • 哇!大卫,你在总共 5 秒中为我节省了 1.7 秒。再次感谢!:)
    猜你喜欢
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2013-07-02
    • 2012-02-23
    • 2011-08-17
    • 2016-09-24
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多