0

私が開発したAndroidアプリがあります。これは、リリースされて正常に動作する成功したiOSアプリから作成されました。1つのデバイスでは、正しく動作し、エラーは発生せず、クラッシュしません。ただし、別のデバイス(新しい、新しいバージョンのAndroid、より高速なプロセッサ)ではクラッシュします。クラッシュしたときのメモリエラーは次のとおりです。

ここに画像の説明を入力してください

このアプリは、写真を撮り、その写真をキャンバスの背景として使用するように設計されており、スクリーンショットが撮られます。このプロセスを1回実行できますが、このプロセスを繰り返して別の写真を撮ると、カメラAPIの終了時にアプリケーションが2回目にクラッシュします。そして、これらのエラーを表示します。このアプリケーションは、PhonegapとJquerymobileを使用してEclipseで開発されています。この問題を解決するためにコードのどの部分を投稿すべきかわかりませんが、関連性があると思われる部分があれば、遠慮なく質問してください。

どんな助けでも本当にありがたいです。

4

3 に答える 3

0

PhoneGap Android アプリでメモリが不足する理由についての私の投稿を確認してください。

http://simonmacdonald.blogspot.ca/2012/07/change-to-camera-code-in-phonegap-190.html

camera.getPicture() コマンドを使用すると、いくつかのヒントが見つかる場合があります。それ以外は、カメラのインテントを起動する代わりに、すべてを社内に持ち込むことで、これらのカメラの問題のいくつかを修正することに現在取り組んでいます。

于 2012-09-25T13:12:10.800 に答える
0

こんな裏技ができるなんて.... 画像を背景に使うには...

   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();
  }
}

@Override で使用するには、例として使用します...

unbindDrawables(findViewById(R.id.container));
System.gc();
于 2012-09-25T13:16:59.997 に答える