Android 为什么应用程序性能变慢??当gallery中的相机图像已存储在imageview中时

Android 为什么应用程序性能变慢??当gallery中的相机图像已存储在imageview中时,android,performance,imageview,Android,Performance,Imageview,由于摄像头图像存储在imageview中,应用程序性能降低 有时应用程序关闭。如何修复它 public void onClick(View v) { if(v.getId() == camerabutton.getId()){ addImageView(); } } private void addImageView(){ Intent intent = new Intent(Intent.ACTION_

由于摄像头图像存储在imageview中,应用程序性能降低

有时应用程序关闭。如何修复它

 public void onClick(View v) {
        if(v.getId() == camerabutton.getId()){
            addImageView();
        }
    }

    private void addImageView(){
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(MediaStore.Images.Media.CONTENT_TYPE);
        intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, REQ_CODE_SELECT_IMAGE);
    }

    @Override
    protected void onActivityResult(int requestCode , int resultCode , Intent data) {
        if(requestCode == 100){
            if(resultCode == Activity.RESULT_OK){
                ImageView imageView = new ImageView(this);
                ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(postArea.getWidth(), ViewGroup.LayoutParams.WRAP_CONTENT);
                imageView.setLayoutParams(params);
                //params.width = postArea.getWidth();


                imageView.setLayoutParams(params);
                Uri imgUri = data.getData();
                imageView.setImageURI(imgUri);
                postArea.addView(imageView);
            }
        }
    }
}

postArea是LinerLayout~此代码是将imageView添加到布局

将uri转换为位图,并将位图缩放到所需大小或imageView的大小。这还将减少位图的大小以及用于加载位图的内存。试试下面的方法

 @Override
    protected void onActivityResult(int requestCode , int resultCode , Intent data) {
        if(requestCode == 100){
            if(resultCode == Activity.RESULT_OK){
                ImageView imageView = new ImageView(this);
                ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(postArea.getWidth(), ViewGroup.LayoutParams.WRAP_CONTENT);
                imageView.setLayoutParams(params);
                //params.width = postArea.getWidth();


                imageView.setLayoutParams(params);
                Uri imgUri = data.getData();
                //Convert uri to bitmap and reduce its size
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imgUri);
                //scale bitmap to the required size of imageview
                //this way it memory usage will also be less
                //set resized bitmap to imageview
                bitmap = Bitmap.createScaledBitmap(bitmap, imageview_width, imageview_height, false));
                imageView.setImageBitmap(bitmap);
                postArea.addView(imageView);
            }
        }
    }

您还可以压缩位图以减小大小。

您在尝试加载高分辨率图像时,很可能内存不足