关于Android GC的一些理解

来源:互联网 发布:cacti添加linux主机 编辑:程序博客网 时间:2024/06/07 23:33

最近在实习单位使用Picasso重构掉UniversalImageLoader使使用了如下的代码

Picasso.with(this)        .load(pictureUrl)        .into(new Target() {            @Override            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {                doSomeThing();            }            @Override            public void onBitmapFailed(Drawable errorDrawable) {            }            @Override            public void onPrepareLoad(Drawable placeHolderDrawable) {            }        });

doSomeThing()方法总是不会被调用,google后知道是由于target对象被GC了,我就想让target对象保持一个对imageview的引用,是不是就不会被GC了?结果是我想反了,GC时和不管你有没有保持别的对象的引用,只在乎你有没有被别的对象持有强引用,修改代码如下:

Target target = new Target() {            @Override            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {               imageView.setImageBitmap(bitmap);            }            @Override            public void onBitmapFailed(Drawable errorDrawable) {            }            @Override            public void onPrepareLoad(Drawable placeHolderDrawable) {            }        };        imageView.setTag(target);        Picasso.with(this).load(pictureUrl).into(target);
0 0
原创粉丝点击