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. Jmeter安装设置

    Linux: 其实下载之后就可以用,不过为了能在命令行直接敲入”jmeter"就可以调出Jmeter程序,还需要进行如下设置. 1. Download apache-jmeter-2.12. ...

  2. SQL Server优化之SQL语句优化

    一切都是为了性能,一切都是为了业务 一.查询的逻辑执行顺序 (1) FROM left_table (3) join_type JOIN right_table (2) ON join_conditi ...

  3. J2EE开发中常用的缓存策略

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  4. Zimbra8.x邮件服务器安装及配置

    官网地址:http://www.zimbra.com/downloads  下载说明:   1. 版本:    zimbra有两个大版本:Open Source Edition和 Network Ed ...

  5. angularjs 创建自定义的指令

    创建自定义的指令 除了 AngularJS 内置的指令外,我们还可以创建自定义指令. 你可以使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTMl 元素上需要添加自定义指令名 ...

  6. 对openflow 1.0协议的扩展

    通过这几天对openvswitch代码的分析,以及项目的须要,须要对openflow 1.0进行一定的扩展,发现网上没有这方面的教程,尽管在搞懂ovs代码架构,floodlight controlle ...

  7. poj 1012 Joseph (约瑟夫问题)

    Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47657   Accepted: 17949 Descript ...

  8. Android文档资源大放送 感兴趣的话可以网盘下载(个人收集)

    Google.Android.SDK开发范例大全.第3版源码.rar http://pan.baidu.com/s/1c0epYzm 精通Android 3中文版(Pro Android 3).pdf ...

  9. javascript基础之javascript的存在形式和js代码块在页面中的存放位置

    1.存在形式 文件 如: <script src='js/jc.js'></script> 前页面 <script type='text/javascript'>a ...

  10. HTML中<b>标签和<strong>便签的区别

    最近碰到的问题,自己写的时候因为<b>标签比较简短偶尔使用,看到别人有使用<strong>标签的,本人不懂区别,在网上找的别人的东西,觉得很有道理,跟大家分享看看~~ 链接:h ...