安卓:因为ImageView的记忆错误? [英] Android: Memory error because of an ImageView?

查看:220
本文介绍了安卓:因为ImageView的记忆错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个活动
活动A = GameActivity使用PhotoTask.class延伸AsyncTask的,用于拍摄和保存图像的一个实例。一旦图片保存,从我做起活动B = ShareActivity。

当我拍照,不改变方向,活动B被调用,一切工作正常。但是,如果我更改屏幕拍摄照片的方向(我是从波泰特景观通)我有错误,当我拍照(活动B不启动)。

我甚至评论我的位图图像在我的code,但仍然有位错误!
是什么奇怪的是,如果我评论的ImageView5在我的code(它有什么特别的),并让我的位图,我没有错误。这个问题似乎走到这弗罗姆的ImageView,但我不能解释它

我添加configChanges:方位清单,回收我bnitmaps,使用的活动,而不是acitvity自己作为PhotoTask变量的WeakReference的,想看到日食内存分析器内存泄漏(<一个href=\"http://stackoverflow.com/questions/14646029/android-detecting-leaks-with-eclipse-memory-analyzer\">Android:泄漏检测与Eclipse内存分析器),但不明白为什么我有这些错误

我真的搜查了很多,我已经相当绝望,所以如果你能帮我,这将是很好

  10月2日至四日:03:04.353:E / AndroidRuntime(17427):致命异常:主要
10月2日至四日:03:04.353:E / AndroidRuntime(17427):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.kersplatt / com.example.kersplatt.ShareActivity}:android.view.InflateException:二进制XML文件行#23:错误充气类&LT;&不明GT;
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.os.Handler.dispatchMessage(Handler.java:99)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.os.Looper.loop(Looper.java:130)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread.main(ActivityThread.java:3683)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在java.lang.reflect.Method.invokeNative(本机方法)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在java.lang.reflect.Method.invoke(Method.java:507)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:875)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在dalvik.system.NativeStart.main(本机方法)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):android.view.InflateException:二进制XML文件行#23:由错误造成充气类&LT;&不明GT;
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.createView(LayoutInflater.java:518)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.inflate(LayoutInflater.java:408)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.Activity.setContentView(Activity.java:1657)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在com.example.kersplatt.ShareActivity.onCreate(ShareActivity.java:64)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):... 11个
10月2日至四日:03:04.353:E / AndroidRuntime(17427):由:java.lang.reflect.InvocationTargetException
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在java.lang.reflect.Constructor.constructNative(本机方法)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.view.LayoutInflater.createView(LayoutInflater.java:505)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):... 23个
10月2日至四日:03:04.353:E / AndroidRuntime(17427):java.lang.OutOfMemoryError:产生的原因位图大小超过VM预算
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:460)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:336)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.content.res.Resources.loadDrawable(Resources.java:1709)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.content.res.TypedArray.getDrawable(TypedArray.java:601)
。10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.widget.ImageView&LT;&初始化GT;(ImageView.java:118)
。10月2日至四日:03:04.353:E / AndroidRuntime(17427):在android.widget.ImageView&LT;&初始化GT;(ImageView.java:108)
10月2日至四日:03:04.353:E / AndroidRuntime(17427):... 26多

为您的信息,我的$ C $的C PIECE

 公共类ShareActivity扩展活动实现OnClickListener {
    公共静态最后弦乐APP_ID =**********;
    正在使用Facebook =新的Facebook(APP_ID);
    AsyncFacebookRunner mAsyncRunner =新AsyncFacebookRunner(脸谱);
    字符串文件名=AndroidSSO_data;
    共享preferences米preFS;
    处理器mHandler;
    档案文件;
    字节[]字节;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        Log.w(SHAREACTIVITY,第二);
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.share);
        文件=(文件)this.getIntent()getExtras()获得(PICTURE_TAKEN)。;
        位图位图= BitmapFactory.de codeFILE(file.getAbsolutePath());
        位图mut​​ableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,真);
        ** ImageView的图像5 =(ImageView的)findViewById(R.id.imageView5)**
        ** image5.setImageBitmap(mutableBitmap)**
        bitmap.recycle();
        mutableBitmap.recycle();    }

CLASS PHOTOTASK

 公共类PhotoTask扩展的AsyncTask&LT;布尔,太虚,太虚&GT; {
    私人相机拍照;
    私人SurfaceView surfaceCamera;
    私人布尔是preVIEW = FALSE;
    私人SurfaceHolder持有人;
    私人的WeakReference&LT; GameActivity&GT; weakgameactivity;
    GameActivity gameactivity;
    私人文件输出;    公共PhotoTask(相机拍照,SurfaceView surfaceCamera,布尔是preVIEW,SurfaceHolder持有人,GameActivity gameactivity){
        超();
        this.camera =摄像头;
        this.surfaceCamera = surfaceCamera;
        this.is preVIEW =为preVIEW;
        this.holder =持有人;
        this.weakgameactivity =新的WeakReference&LT; GameActivity&GT;(gameactivity);
        this.gameactivity = this.weakgameactivity.get();
    }
    PictureCallback myPictureCallback_JPG =新PictureCallback(){        @覆盖
        公共无效onPictureTaken(字节[]数据,相机摄像头){
            Log.w(GAMEACTIVITY,FIRST);
// ImageView的图像5 =(ImageView的)gameactivity.findViewById(R.id.imageView6);
            文件imagesFolder =新的文件(Environment.getExternalStorageDirectory()/ KersplattFolder);            imagesFolder.mkdirs();
            SimpleDateFormat的日期格式=新的SimpleDateFormat(YYYYMMDDHHMMSS);
            字符串日期= dateFormat.format(新的Date());
            字符串文件名=Kersplatt_+日期+.JPG;
            输出=新的文件(imagesFolder,文件名);
            ImageView的观点=(ImageView的)gameactivity.findViewById(R.id.imageView6);
            view.setDrawingCacheEnabled(真);
            位图B = view.getDrawingCache();
            FOS的FileOutputStream = NULL;
            尝试{
                FOS =新的FileOutputStream(输出);
            }赶上(FileNotFoundException异常E1){
                // TODO自动生成catch块
                e1.printStackTrace();
            }
            b.com preSS(比较pressFormat.JPEG,95,FOS);
            尝试{
            fos.write(数据);
            fos.close();
            }赶上(FileNotFoundException异常五){
                    e.printStackTrace();
            }
              赶上(IOException异常五){
                    e.printStackTrace();
            }
              camera.stop preVIEW();
              Log.w(GAMEACTIVITY,意图);
              b.recycle();
              意向意图=新意图(gameactivity.getApplicationContext(),ShareActivity.class);
              //发送带到ShareActivity图片
              intent.putExtra(PICTURE_TAKEN,输出);
              gameactivity.startActivity(意向);
        }    };    @覆盖
    保护无效doInBackground(布尔... PARAMS){
         camera.takePicture(NULL,NULL,myPictureCallback_JPG);
            Log.w(GAMEACTIVITY,TAKEPICTURE);
            返回null;
    }
}

我imageview5

 &LT; ImageView的
         机器人:ID =@ + ID / imageView5
         机器人:layout_width =85dp
         机器人:layout_height =100dp
         机器人:layout_marginLeft =8DP
         机器人:layout_marginTop =20dp
         机器人:adjustViewBounds =真
         机器人:SRC =@绘制/ diviseur/&GT;


解决方案

由于乌斯曼说,库尔德人,你加载(满)图像在内存中,并在内存中创建一个副本。它使用的内存大量。文档,他指的是状态:

  BitmapFactory.Options选项=新BitmapFactory.Options();
options.inJustDe codeBounds = TRUE;
BitmapFactory.de codeResource(getResources(),R.id.myimage,期权);
INT imageHeight = options.outHeight;
INT imageWidth = options.outWidth;
字符串IMAGETYPE = options.outMimeType;

您的内存不足发生在其中任一行为,而不是在ImageView的设置图像

 位图位= BitmapFactory.de codeFILE(file.getAbsolutePath());
位图mut​​ableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888,真);

如果您使用此机器人将不会加载整个位图到内存,但一个缩小版本。
阅读文档,你的错误肯定会消失。

以上code只会去code的界限。该文档解释了如何使用它。看到名为章节加载一个缩小版本到内存如何正确实现这个

I have 2 activities Activity A = GameActivity uses an instance of PhotoTask.class which extends AsyncTask and is used to take and save picture. Once the picture is saved, I start Activity B = ShareActivity.

When I take a picture and don't change the orientation, Activity B is called and everything works fine. Yet, if I change the orientation of the screen to take the picture (I pass from portait to landscape) I have errors when I take a picture (Activity B does not start).

I even commented my bitmap images in my code, but still have bitmap errors! What is strange is that if I comment the ImageView5 in my code (which does nothing particular) and keep my bitmap, I have no error. The problem seems to come frome this ImageView but I cant explain it

I added configChanges:orientation in the manifest, recycle my bnitmaps, used a WeakReference of an activity instead of the acitvity itself as a variable in PhotoTask, tried to see the memory leaks with eclipse memory analyzer (Android: Detecting leaks with Eclipse Memory Analyzer) but didnt understand why I had these errors

I really searched a lot and I'm becoming quite desperate so if you could please help me it would be nice

02-04 10:03:04.353: E/AndroidRuntime(17427): FATAL EXCEPTION: main
02-04 10:03:04.353: E/AndroidRuntime(17427): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kersplatt/com.example.kersplatt.ShareActivity}: android.view.InflateException: Binary XML file line #23: Error inflating class <unknown>
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.os.Looper.loop(Looper.java:130)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread.main(ActivityThread.java:3683)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at java.lang.reflect.Method.invokeNative(Native Method)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at java.lang.reflect.Method.invoke(Method.java:507)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:875)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at dalvik.system.NativeStart.main(Native Method)
02-04 10:03:04.353: E/AndroidRuntime(17427): Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class <unknown>
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.createView(LayoutInflater.java:518)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.Activity.setContentView(Activity.java:1657)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at com.example.kersplatt.ShareActivity.onCreate(ShareActivity.java:64)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-04 10:03:04.353: E/AndroidRuntime(17427):    ... 11 more
02-04 10:03:04.353: E/AndroidRuntime(17427): Caused by: java.lang.reflect.InvocationTargetException
02-04 10:03:04.353: E/AndroidRuntime(17427):    at java.lang.reflect.Constructor.constructNative(Native Method)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.view.LayoutInflater.createView(LayoutInflater.java:505)
02-04 10:03:04.353: E/AndroidRuntime(17427):    ... 23 more
02-04 10:03:04.353: E/AndroidRuntime(17427): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.content.res.Resources.loadDrawable(Resources.java:1709)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.widget.ImageView.<init>(ImageView.java:118)
02-04 10:03:04.353: E/AndroidRuntime(17427):    at android.widget.ImageView.<init>(ImageView.java:108)
02-04 10:03:04.353: E/AndroidRuntime(17427):    ... 26 more

FOR YOUR INFORMATION, PIECE OF MY CODE

public class ShareActivity extends Activity implements OnClickListener{
    public static final String APP_ID = "**********";
    Facebook facebook = new Facebook(APP_ID);
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
    String FILENAME = "AndroidSSO_data";
    SharedPreferences mPrefs;
    Handler mHandler;
    File file;
    byte[] bytes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.w("SHAREACTIVITY","SECOND");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.share);
        file = (File) this.getIntent().getExtras().get("PICTURE_TAKEN");
        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
        Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
        **ImageView image5 = (ImageView) findViewById(R.id.imageView5);**
        **image5.setImageBitmap(mutableBitmap);**
        bitmap.recycle();
        mutableBitmap.recycle();

    }

CLASS PHOTOTASK

public class PhotoTask extends AsyncTask<Boolean, Void, Void> {
    private Camera camera;
    private SurfaceView surfaceCamera;
    private boolean isPreview=false;
    private SurfaceHolder holder;
    private WeakReference<GameActivity> weakgameactivity;
    GameActivity gameactivity;
    private File output;

    public PhotoTask(Camera camera, SurfaceView surfaceCamera,boolean isPreview, SurfaceHolder holder, GameActivity gameactivity) {
        super();
        this.camera = camera;
        this.surfaceCamera = surfaceCamera;
        this.isPreview = isPreview;
        this.holder = holder;
        this.weakgameactivity = new WeakReference<GameActivity>(gameactivity);
        this.gameactivity=this.weakgameactivity.get();
    }


    PictureCallback myPictureCallback_JPG = new PictureCallback(){

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Log.w("GAMEACTIVITY","FIRST");
//          ImageView image5 = (ImageView) gameactivity.findViewById(R.id.imageView6);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/KersplattFolder");

            imagesFolder.mkdirs(); 
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
            String date = dateFormat.format(new Date());
            String fileName = "Kersplatt_" + date + ".jpg";
            output = new File(imagesFolder, fileName);
            ImageView view = (ImageView) gameactivity.findViewById(R.id.imageView6);
            view.setDrawingCacheEnabled(true);
            Bitmap b = view.getDrawingCache();
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(output);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            b.compress(CompressFormat.JPEG, 95, fos);
            try {
            fos.write(data);
            fos.close();
            } catch (FileNotFoundException e) {
                    e.printStackTrace();
            }
              catch (IOException e) {
                    e.printStackTrace();
            }
              camera.stopPreview();
              Log.w("GAMEACTIVITY","INTENT");
              b.recycle();
              Intent intent = new Intent(gameactivity.getApplicationContext(),ShareActivity.class);
              // Sending the picture taken to ShareActivity
              intent.putExtra("PICTURE_TAKEN", output);
              gameactivity.startActivity(intent);
        }

    };

    @Override
    protected Void doInBackground(Boolean... params) {
         camera.takePicture(null,null, myPictureCallback_JPG);
            Log.w("GAMEACTIVITY","TAKEPICTURE");
            return null;
    }


}

My imageview5

   <ImageView
         android:id="@+id/imageView5"
         android:layout_width="85dp"
         android:layout_height="100dp"
         android:layout_marginLeft="8dp"
         android:layout_marginTop="20dp"
         android:adjustViewBounds="true"
         android:src="@drawable/diviseur" />

解决方案

As Usman Kurd says, you load the (full) image in memory, and create a copy of that in memory. This uses a vast amount of memory. The documentation he refers to states:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;

Your out of memory occurs on either of these lines, not on setting the image in the imageview

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

If you use this android won't load the entire bitmap into memory but a scaled down version. Read the documentation and your error will definitely go away.

Above code will only decode the bounds. The documentation explains how to use this. See the chapter named "Load a Scaled Down Version into Memory" how to implement this properly

这篇关于安卓:因为ImageView的记忆错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆