android - 如何保留之前加载的图像?

标签 android android-image

我有 3 个 fragment 。这些 fragment 被放置在 TabsAdapter 中,用于在这些 fragment 之间切换。

问题是,当应用程序加载并创建 fragmentA View 时,它会下载图像,然后更改 ImageView :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    this.myFragmentView = inflater.inflate(R.layout.foto_setmana, container, false); //Això conté els "edittext i altres"
        new DownloadImageTask(myFragmentView).execute("http://192.168.1.35/testing/fotos/foto1.jpg");
    }
}

DownloadImageTask 中的代码:

public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
View myfragmentview;

public DownloadImageTask(View myfragmentview) {
    this.myfragmentview=myfragmentview;
}

protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
        Log.d("debugging","mIcon11"+mIcon11.getHeight());
    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    ImageView imv=(ImageView)this.myfragmentview.findViewById(R.id.imageView1);
    imv.setImageBitmap(result);
}

所以这就是正在发生的事情: enter image description here

1.- 我点击应用 2.- 应用程序加载。此屏幕是在应用程序有时间检索图像之前拍摄的。 3.- 当它检索图像时,它会显示出来。 4.- 我将 fragment 滑动到下一个 fragment 。 5.- 第二个 fragment 6.- 我再次滑动到第三个 fragment 。 7. 第三个 fragment 。 8. 我回到第一个 fragment ,图像不再加载。显然我不会再次调用 DownloadImageTask,因为它会降低很多用户体验。

我应该怎么做才能保留图像?

哦,顺便说一句。如果我只是从第 1 次滑动到第 2 次,图像不会“卸载”,如果我转到第 3 次或更远,它就会发生。知道为什么会这样吗?我只是对此感到好奇。

谢谢!

最佳答案

使用 LruCache 创建位图的 RAM 缓存。

这个很棒的 Google IO 演讲解释了如何使用它: http://youtu.be/gbQb1PVjfqM?t=5m

关于android - 如何保留之前加载的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279559/

相关文章:

android - 在按钮android中设置图像

android - Google play 的搜索如何运作?

java - 如何将自定义布局设置为菜单项?

Android Studio - 在 Gradle 中为 ManifestPlaceholders 分配多个值

android - 如何从 Uri 获取位图?

android - 如何将YUV_420_888图像转换为位图

Android - 在静态类中使用通用图像加载器

Android以最有效的方式将图片上传到服务器

android - 如何解决可恢复的协议(protocol)解码器异常:the line is too long in android

java - 从SD卡获取图像并在Gridview中显示