1:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button test1"/> <Button
android:layout_below="@id/btn_1"
android:id="@+id/btn_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button Intent Other Activity"/> <ImageView
android:layout_below="@id/btn_2"
android:id="@+id/img_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/> </RelativeLayout>

2:HttpHelper.java

public class HttpHelper {
//图片资源缓存
private static Map<String,Bitmap>bitmapCache=new HashMap<String,Bitmap>(); public static Bitmap getHttpBitmap(String url){
     //首先先从缓存中取数据
Bitmap bitmap=bitmapCache.get(url);
if(bitmap!=null){
        //如果取到就直接返回
return bitmap;
} try{
URL myUrl=new URL(url);
HttpURLConnection conn=(HttpURLConnection)myUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is=conn.getInputStream();
bitmap=BitmapFactory.decodeStream(is);
is.close();
}catch(Exception e){
e.printStackTrace();
} if(bitmap!=null){
        //将获取到的图片缓存起来
bitmapCache.put(url, bitmap);
} return bitmap;
}
}

3:MainActivity.java

public class MainActivity extends Activity {
private Button btnTest1=null;
private Button btnTest2=null;
private ImageView imgView=null;
private Bitmap bitmap=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initUI(); btnTest1.setOnClickListener(new OnClickListener(){
public void onClick(View view){
new Thread(new GetImgThread()).start();
}
}); btnTest2.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
}
});
} private void initUI(){
btnTest1=(Button)findViewById(R.id.btn_1);
btnTest2=(Button)findViewById(R.id.btn_2);
imgView=(ImageView)findViewById(R.id.img_view);
} Handler myHandler=new Handler(){
public void handleMessage(Message msg){
imgView.setImageBitmap(bitmap);
}
}; class GetImgThread implements Runnable{
public void run(){
String url="http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Hukou_Waterfall.jpg/800px-Hukou_Waterfall.jpg";
bitmap=HttpHelper.getHttpBitmap(url);
myHandler.obtainMessage().sendToTarget();
}
}
}

4:activity_other.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" > <Button
android:id="@+id/btn_get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button Get Img"/> <ImageView
android:id="@+id/img_view_2"
android:layout_below="@id/btn_get"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>

5:OtherActivity.java

public class OtherActivity extends Activity {
private Bitmap bitmap=null;
private Button btnGetImg=null;
private ImageView imgView=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other); btnGetImg=(Button)findViewById(R.id.btn_get);
imgView=(ImageView)findViewById(R.id.img_view_2); btnGetImg.setOnClickListener(new OnClickListener(){
public void onClick(View view){
new Thread(new GetImgThread()).start();
}
});
} Handler myHandler=new Handler(){
public void handleMessage(Message msg){
imgView.setImageBitmap(bitmap);
}
}; class GetImgThread implements Runnable{
public void run(){
String url="http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Hukou_Waterfall.jpg/800px-Hukou_Waterfall.jpg";
bitmap=HttpHelper.getHttpBitmap(url);
myHandler.obtainMessage().sendToTarget();
}
} }

6:运行结果如下:

Android 把从网络获取的图片缓存到内存中的更多相关文章

  1. Android 将从网络获取的数据缓存到私有文件

    1:activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  2. Android热身:通过网络获取资源并更新UI组件

    Android热身:通过网络获取资源并更新UI组件 目标 点击"发送请求"按钮,下载某网页的html源码,并显示在TextView控件上:点击"清空",清除Te ...

  3. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化   在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...

  4. oracle中如何将表缓存到内存中

    oracle快速将表缓存到内存中,使得访问速度加快. 共有2种方法:   1)alter table fisher cache; 2)alter table fisher storage(buffer ...

  5. Android LazyList 从网络获取图片并缓存

    原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...

  6. Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  7. LruCache:从网络加载图片缓存实例

    OOM异常 堆内存用于存储实例对象,当程序不断创建对象,并且对象都有引用指向,那么垃圾回收机制就不会清理这些对象,当对象多到挤满堆内存的上限后,就产生OOM异常.Android系统为每个应用程序使用的 ...

  8. Android开源项目发现--- 工具类图片缓存篇(持续更新)

    1. Android-Universal-Image-Loader 图片缓存 目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性. 项目地址:https://github.com/nostra1 ...

  9. 图片_ _图片缓存之内存缓存技术LruCache,软引用

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧.这篇博文要讲的图片缓存机制,我接触到的有两钟,一 ...

随机推荐

  1. [Java] 继承中,父类被覆盖的成员变量、方法的可访问性

    在 Java 的继承机制里,在子类内部,可以访问父类被覆盖的变量和方法:在子类外部,可以访问父类的被覆盖变量,但是不能访问父类的被覆盖方法. 父类中被覆盖的方法不能在外部被方法,这是出于封装的考虑. ...

  2. objc_msgSend iOS8 EXC_BAD_ACCESS

    如果方法是没有返回值的,需要强转一个返回类型为void的临时函数指针, void (*objc_msgSendTyped)(id self, SEL _cmd, id obj, id arg1) = ...

  3. 定时执行程序-Quartz简单实例

    1.加jar包:Quartz自己quartz-1.8.3.jar和依赖包commons-logging.jar  .slf4j-log4j12-1.5.10.jar .slf4j-api-1.5.10 ...

  4. XML (DOM解析) 看看就行

    000000000000000000000000000000000000000 ------------------------------------------------------------ ...

  5. ganglia单播配置

    背景:    有时,由于当前网络不支持组播等种种原因,使用gmond默认的配置gmetad不能获取到各个客户端的全部数据,http://x.x.x.x/ganglia页面一个cluster组只能展示一 ...

  6. Object-C 函数定义 -- 笔记

    -(int) f:(int)x; 1.这里 - 表示对象方法, +表示类的方法 2.参数分割使用 : 号来分开 多参数情况: 1.函数不带参数 (函数名: f) -(int) f 2.带一个参数(函数 ...

  7. HDU 2485 Destroying the bus stations (IDA*+ BFS)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题意:给你n个点,m条相连的边,问你最少去掉几个点使从1到n最小路径>=k,其中不能去掉1, ...

  8. iOS_15_通过代码自己定义cell_微博UI

    终于效果图: BeyondTableViewController.h // // BeyondTableViewController.h // 15_代码自己定义cell_weibo // // Cr ...

  9. Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载

    本系列的 第 4 部分和 第 5 部分讨论了如何用 Javassist 对二进制类进行局部更改.这次您将学习以一种更强大的方式使用该框架,从而充分利用 Javassist 对在字节码中查找所有特定方法 ...

  10. C语言原码反码补码与位运算.

      目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算 ...