Android仿String的对象驻留示例分析

本文实例分析了Android仿String的对象驻留。分享给大家供大家参考,具体如下:

String a = "abc";

String b = "abc";

a == b     true;

变量a和变量b是同一个值。这不只是说它俩的值是一样的,而是说就是同一个字符串对象。用Java的话来说就是a==b的结果是true。然而这个只对字符串以及小的整型或者长整型有效。其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象。这个问题有时候很讨厌,尤其是当你从某个持久化存储中取出一个对象时。如果同一个对象你取了两次,你当然希望最终取出的是同一个对象,不过实际上你取出的是两份拷贝。换句话说你其实希望的是取出的是存储中那个对象在内存里面的同一个拷贝。有些存储层是会做这样的处理的。比如说JPA的实现就是遵循这个模式的,而别的情况可能你就得自己去做缓存了。

如何让自己的对象,也好似上面string一样呢;使用下面这个类吧

import java.lang.ref.WeakReference;
import java.util.WeakHashMap;
class WeakPool<T> {
  private final WeakHashMap<T, WeakReference<T>> pool = new WeakHashMap<T, WeakReference<T>>();
  public T get(T object) {
    final T res;
    WeakReference<T> ref = pool.get(object);
    if (ref != null) {
      res = ref.get();
    } else {
      res = null;
    }
    return res;
  }
  public void put(T object) {
    pool.put(object, new WeakReference<T>(object));
  }
}

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android string.xml中的替换方法

    本文实例讲述了Android string.xml中的替换方法.分享给大家供大家参考,具体如下: 在android的开发中,经常会遇见一句话,比如"我今年23岁了":这个23需要在程序中生成,但是遇到一个问题,这完整的一句话是一个TextView中的,而不是三个textView拼接成的,而且是引用的string.xml文件中写好的:使用字符串拼接也可以实现,但是特别麻烦: 今天遇到一个好方法,在string.xml中,不仅可以设置文字的格式换行等,还可以设置类似于变量的文本格式: 1.

  • 不可不知的Android strings.xml那些事

    strings.xml 有很多需要注意的地方和一些小技巧,知道了这些可以让你的 Android 应用更加规范易用,感兴趣的小伙伴们可以参考一下 不要复用  这一条可能很多人会有不同的意见,因为广为流行的编程理念就在教导我们要复用代码,当然代码复用是很好的理念,可以让程序更加简洁.但也容易形成什么都想复用的思维惯性,而这在某些场景下就可能会造成麻烦. 比如,想象下你在应用中的登录和注册界面中都是用了相同的字符串 – R.string.loading.  <string name="loadi

  • Android String资源文件插入值实例详解

    Android String资源文件插入值实例详解 我们在用string字符串资源文件引用的时候,有时候会遇到一串字符串要在中间插入一个值的问题, 比如 登录名: XXX,这里XXX是变化的.这时候我们可能会想到拼接.其实也可以使用格式化方式处理.比如 <string name="alert">I am %1$d years old</string> 在代码中使用的话: nt nAge=23; String sAgeFormat = getResources()

  • Android SpannableString设置超链接、颜色、字体等属性

    Android SpannableString设置超链接.颜色.字体等属性 在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. package com.snowdream; import java.io.IOException; import org.xmlpul

  • Android strings.xml使用方法及技巧

    相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些可以让你的 Android 应用更加规范易用,大家来看看吧.:   ) 不要复用 这一条可能很多人会有不同的意见,因为广为流行的编程理念就在教导我们要复用代码,当然代码复用是很好的理念,可以让程序更加简洁.但也容易形成什么都想复用的思维惯性,而这在某些场景下就可能会造成麻烦. 比如,想象下你在应用中的登录和注册界面中都是用了相同的字符串 – R.string

  • Android string-array数据源简单使用

    在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的arrays.xml文件里 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="city"> <item>厦门市</item> <item>福州市&l

  • Android仿String的对象驻留示例分析

    本文实例分析了Android仿String的对象驻留.分享给大家供大家参考,具体如下: String a = "abc"; String b = "abc"; a == b     true; 变量a和变量b是同一个值.这不只是说它俩的值是一样的,而是说就是同一个字符串对象.用Java的话来说就是a==b的结果是true.然而这个只对字符串以及小的整型或者长整型有效.其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象.这

  • Android仿微信布局的实现示例

    目前没有实现微信的功能,只是对微信的各个界面的调动以及对通讯录,发现和我中各个按钮的设置,同时如果你想尝试给微信中各个按钮背后添加功能时间可以用此作为模板哦,如拍照,朋友圈的添加都可以在此拓展哟,这个代码后期我会尽可能的添加对应的按钮的功能,希望对你们有所帮助,另外,这个代码的部分调用没有完成,不过我给部分的界面跳转做过例子了,照此方法即可完成,很容易的!另外我用的方法比较笨重,但是很容易理解,也算对我们初学者做个简单参考吧! 下面是代码部分: <?xml version="1.0&quo

  • Android仿QQ空间底部菜单示例代码

    之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字.于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考.效果如下图所示:   1.实现原理很简单,底部菜单是一个水平分布的LinearLayout,里面又是五个LinearLayout,它们的layout_weight都为1,意味着底部菜单的子控件将屏幕宽度平均分为5部分.五个LinearLayout除了中间那个,其余都在里面放置ImageView和TextView(中间先空

  • Android 资源加载使用伪代码示例分析

    目录 引言 Resource是什么? 基础概念 getText getDrawable 小结 Tips getColor 总结 引言 聊到 Android 的 资源加载 ,每一个开发同学都会非常熟悉,毕竟从使用来说,我们日常都会见到,比如 getText() 等等. 那如果此时问你,你知道 它们到底是怎么被加载的,内部会有什么处理吗? 为什么同一个drawable界面更改了透明度,其他界面也会生效? 如果你对上述问题依然存疑,那本文可能会对你有所帮助. 介于此,本篇将由浅入深,从源头理清 Res

  • Android仿QQ空间顶部条背景变化效果

    本文给大家分享仿QQ空间页面顶部条随界面滑动背景透明度变化的效果,这个效果在其他应用程序中也很常见,技能+1. 一.上代码,具体实现 笔者之前的文章第二部分总是二话不说,直接上代码,很干脆,其实更好的方式是引导读者思考:这个效果如何实现.前期做好效果的功能分析,才能读者更好的理解. QQ空间的这个页面其实并不复杂,我们看看QQ空间的演示界面: 可以看见,整个页面其实只有两个根元素,一个是ListView,一个是标题栏,前者可以上下滑动,给用户呈现内容:后者固定位置不动,类似于一个导航栏,左边一个

  • Android仿微信发送语音消息的功能及示例代码

    微信的发送语音是有一个向上取消的,我们使用onTouchListener来监听手势,然后做出相应的操作就行了. 直接上代码: //语音操作对象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; //语音文件保存路径 private String FileName = null; FileName = Environment.getExternalStorageDirectory().getAbs

  • Android仿Boss直聘文本日期混合滚轮选择器示例

    1.需求分析 GitHub上面有一款iOS风格的滚轮选择器Android-PickerView,它分为时间选择器代码TimePickerView和选项选择器OptionsPickerView,不但可以选择时间日期,可以选择我们自定义的数据,比如性别.年龄等.我一直都用它.直到最近遇到了一个需求,它的选项里面既有文字也有时间,大体效果如Boss直聘添加项目经验中的时间选择功能: 从图中我们可以看出,除了常规的年份和月份的选择,选项中还包含了文本.其中,最新的时间是"至今",而最早可供选择

  • Android实现的仿淘宝购物车demo示例

    本文实例讲述了Android实现的仿淘宝购物车.分享给大家供大家参考,具体如下: 夏的热情渐渐退去,秋如期而至,丰收的季节,小编继续着实习之路,走着走着,就走到了购物车,逛过淘宝或者是京东的小伙伴都知道购物车里面的宝贝可不止一件,对于爱购物的姑娘来说,购物车里面的商品恐怕是爆满,添加不进去了,以前逛淘宝的时候,小编没有想过要怎么样实现购物车,就知道在哪儿一个劲儿的逛,但是现在不一样了,小编做为一个开发者,想的就是该如何实现,捣鼓了两天的时间,用listview来实现,已经有模有样了,现在小编就来

  • Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用示例

    本文实例讲述了Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用.分享给大家供大家参考,具体如下: 现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoCompleteTextView Widget ,只要搭配ArrayAdapter 就能设计同类似Google 搜索提示的效果. 本例子先在Layout 当中布局一个AutoCom

  • Android仿QQ长按删除弹出框功能示例

    废话不说,先看一下效果图,如果大家感觉不错,请参考实现代码: 对于列表来说,如果想操作某个列表项,一般会采用长按弹出菜单的形式,默认的上下文菜单比较难看,而QQ的上下文菜单就人性化多了,整个菜单给用户一种气泡弹出的感觉,而且会显示在手指按下的位置,而技术实现我之前是使用popupWindow和RecyclerView实现的,上面一个RecyclerView,下面一个小箭头ImageView,但后来发现没有必要,而且可定制化也不高,还是使用多个TextView更好一点. 我封装了一下,只需要一个P

随机推荐