Eclipse Java内存错误:堆。使用Phonegap在Android中开发。

Eclipse Java内存错误:堆。使用Phonegap在Android中开发。,java,android,eclipse,memory,cordova,Java,Android,Eclipse,Memory,Cordova,我有一个我开发的Android应用程序,它是从一个成功发布的ios应用程序创建的,运行良好。在一台设备上,它工作正常,没有错误,也不会崩溃。然而,在另一台设备上(更新的Android版本,更快的处理器),它崩溃了。下面是它崩溃时的内存错误 该应用程序旨在拍摄一张照片,然后将该照片用作画布的背景,然后拍摄一张屏幕截图。我可以执行此过程一次,但如果我重复此过程并拍摄另一张照片,则应用程序将在第二次退出camera API时崩溃。并显示这些错误。该应用程序是在Eclipse中使用Phonegap和J

我有一个我开发的Android应用程序,它是从一个成功发布的ios应用程序创建的,运行良好。在一台设备上,它工作正常,没有错误,也不会崩溃。然而,在另一台设备上(更新的Android版本,更快的处理器),它崩溃了。下面是它崩溃时的内存错误

该应用程序旨在拍摄一张照片,然后将该照片用作画布的背景,然后拍摄一张屏幕截图。我可以执行此过程一次,但如果我重复此过程并拍摄另一张照片,则应用程序将在第二次退出camera API时崩溃。并显示这些错误。该应用程序是在Eclipse中使用Phonegap和Jquery mobile开发的。我不确定我的代码应该发布哪些部分来帮助解决这个问题,但请随时询问您是否觉得其中一些部分可能相关


非常感谢您的帮助。

好的,如果您查看我关于PhoneGap Android应用程序内存不足原因的帖子:


使用camera.getPicture()命令时,您可能会发现一些提示。除此之外,我目前正致力于解决一些相机问题,将所有东西都放在家里,而不是发射相机。

你可以玩这样的把戏。。。。要将图片设置为背景,请使用

   public void setbg(){
 String pathName = Environment.getExternalStorageState() + "scm_pic.jpg";
 Resources res = getResources();
 Bitmap bitmap = BitmapFactory.decodeFile(pathName);
 BitmapDrawable bd = new BitmapDrawable(res, bitmap);
 View view = findViewById(R.id.container);
 view.setBackgroundDrawable(bd);
} 
然后,当您不需要此图片或不想@Override onPause方法或切换其他活动时,请使用

private void unbindDrawables(View view) {
 if (view.getBackground() != null) {
 view.getBackground().setCallback(null);
 }
 if (view instanceof ViewGroup) {
     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
     unbindDrawables(((ViewGroup) view).getChildAt(i));
     }
 ((ViewGroup) view).removeAllViews();
  }
}

若您使用摄像头,则意味着目标类型必须位于android中的文件\ URL中。因为DATA_URI给出base64字符串,所以有时会出现内存不足错误。首先你从摄像头获取URL,然后使用文件系统概念转换base64格式

unbindDrawables(findViewById(R.id.container));
System.gc();