Отслеживание памяти / утечки в Android - PullRequest
1 голос
/ 10 августа 2011

Имеются некоторые проблемы с памятью, когда каждый раз, когда этот блок запускается,% памяти, используемой в DDMS, увеличивается на 2% каждый раз, пока он окончательно не падает при выделении растрового изображения.

    Uri U = null;

    try {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            // We can read and write the media
            File path = this.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            File file = new File(path, "image.jpg");
            path.mkdirs();

            FileOutputStream Os = new FileOutputStream(file);
            getFullResFilteredImage().compress(Bitmap.CompressFormat.JPEG, 80, Os);

            Os.flush();
            Os.close();
            Os = null;

            U = Uri.fromFile(file);
            file.deleteOnExit();
            file = null;
        } else {
            Toast toast = Toast.makeText(PrintLabActivity.this.getApplicationContext(), 
                    PrintLabActivity.this.getResources().getString(R.string.sd_image_error), Toast.LENGTH_SHORT);
            toast.show();
            return;
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("image/jpg");
    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    i.putExtra(Intent.EXTRA_STREAM, U);

    i.putExtra(Intent.EXTRA_SUBJECT, this.getResources().getString(R.string.email_subject));
    String message = this.getResources().getString(R.string.email_message, PNBApplication.MARKETPLACE_URL, PNBApplication.MARKETPLACE_URL);
    i.putExtra(Intent.EXTRA_TEXT   , Html.fromHtml(message));
    U = null;

    this.startActivity(Intent.createChooser(i,"Send Image To:"));

Если в этом коде ничего нетчто может просочиться, есть ли способ сказать, что выделяется каждый раз?

1 Ответ

0 голосов
/ 10 августа 2011

Вы можете использовать BitmapFactory.Options.inSampleSize, чтобы уменьшить потребление памяти при создании растрового изображения.

Для более подробного ответа, пожалуйста, опубликуйте свой метод getFullResFilteredImage ().

...