我有一个应用程序可以使用功能创建拼贴,以便对单张照片应用过滤器。为了在应用过滤器时保持应用程序内存的高效和快速,我只需使用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()时没有看到任何非致命或异常。