在Android中Context.OpenFileOutput()和Context.OpenFileInput()是否可靠?

时间:2016-02-01 22:17:46

标签: android android-context

我有一个应用程序可以使用功能创建拼贴,以便对单张照片应用过滤器。为了在应用过滤器时保持应用程序内存的高效和快速,我只需使用Context.OpenFileOutput()在Context中存储原始照片(裁剪版本)的副本,该文件用于实时应用过滤器。

因此,每次将过滤器应用于照片时,我只需使用OpenFileInput()在Context中保存一个可变位图,然后对其应用过滤器。这使我无法在内存中保留两个相同位图的副本。

这就是我所遇到的问题,我的设备(Nexus 5和三星Galaxy Grand)在调试模式下没有出现这个问题,但我在崩溃分析中遇到了很多崩溃事件(抓住了)。

根据crashlytics中的日志,该文件在Context中不存在,但实际上确实存在。

这是我的代码:

<html>
<body>
<?php
    echo "Favorite color is " . $_SESSION["userid"] . ".<br>";
    echo " nome da pag : " . $_SESSION["nova_pagina"];
    //$userid = $_REQUEST['input_userid'];
    //$nova_pagina = $_REQUEST['input_nova_pagina'];

?>
</body>

这是原始日志:

public static Bitmap decodeFileToBitmap(Context context,
        String filename,Bitmap bmp) 
                throws IOException{
    try {
        FileInputStream fis = context.getApplicationContext().openFileInput(filename);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inMutable = true;
        options.inSampleSize = 1;
        options.inBitmap = bmp;
        Bitmap bitmap = BitmapFactory.decodeStream(fis, null, options);
        fis.close();
        return bitmap;
    }catch (Exception ex){
        return null;
    }
}


public static void deleteFileWithName(Context context, String filename){
    try {
        context.deleteFile(filename);
    }catch (Exception ex){}
}

/**/
public static void saveFileInternally(Context context,
        String filename,Bitmap bmp) throws IOException{
    FileOutputStream fos = context.getApplicationContext().openFileOutput(filename,Context.MODE_PRIVATE);
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.close();
}

嗯,我在调用Context.openFileOutput()时没有看到任何非致命或异常。

0 个答案:

没有答案