当前位置: 首页 > news >正文

网站地图怎样做网站开发开票编码归属

网站地图怎样做,网站开发开票编码归属,芜湖网络,天津做网站58DiskLruCache DiskLruCache是一个十分好用的android缓存工具#xff0c;我们可以从GitHub上下载其源码#xff1a;https://github.com/JakeWharton/DiskLruCache DiskLruCache所有的数据都存储在/storage/emulated/0/Android/data/应用包名/cache/XXX文件夹中(你也可以修改我们可以从GitHub上下载其源码https://github.com/JakeWharton/DiskLruCache DiskLruCache所有的数据都存储在/storage/emulated/0/Android/data/应用包名/cache/XXX文件夹中(你也可以修改但不建议这样做原因请继续往下看)这个是android系统默认的应用缓存位置如果应用被删除这个文件也会一起被删除避免应用删除后有残留数据的问题。同时由于数据没有存储在硬盘里所以不会影响系统性能在sd卡里你可以存储任意多数据。  由于DiskLruCache是被final修饰的因此不可以直接通过new获得它的实例我们使用它的open方法获得它的一个实例  public static DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize)  open方法需要四个参数第一个是缓存文件文件的位置通过下面的方法可得到 private File getDiskCacheDir(Context context, String uniqueName) {String cachePath;//如果sd卡存在并且没有被移除if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())|| !Environment.isExternalStorageRemovable()) {cachePath context.getExternalCacheDir().getPath();} else {cachePath context.getCacheDir().getPath();}return new File(cachePath File.separator uniqueName);} 第二个参数是应用程序的版本号要传入版本号是因为如果应用升级缓存会被清除掉。通过下面的方法可以获得程序的版本号private int getAppVersion(Context context) {try {PackageInfo info context.getPackageManager().getPackageInfo(context.getPackageName(), 0);return info.versionCode;} catch (NameNotFoundException e) {e.printStackTrace();}return 1;}第三个参数表示同一个key可以对应多少个缓存文件一般情况下我们都是传1这样key和缓存文件一一对应查找和移除都会比较方便。 第四个参数表示最大可以缓存多少字节的数据。 打开了DiskLruCache之后我们可以看看怎么向DiskLruCache中缓存数据 先来看看从网上down一张图片 private boolean downloadImg(final String urlStr,final OutputStream outputStream) {HttpURLConnection conn null;BufferedOutputStream out null;BufferedInputStream in null;try {URL url new URL(urlStr);conn (HttpURLConnection) url.openConnection();in new BufferedInputStream(conn.getInputStream(), 8 * 1024);out new BufferedOutputStream(outputStream, 8 * 1024);int len 0;while ((len in.read()) ! -1) {out.write(len);}return true;} catch (IOException e) {e.printStackTrace();} finally {if (conn ! null)conn.disconnect();try {if (out ! null)out.close();} catch (IOException e) {e.printStackTrace();}try {if (in ! null)in.close();} catch (IOException e) {e.printStackTrace();}}return false;}这是一个简单的联网down图片代码拿到图片后就可以缓存到本地了但是对于每一个存储资源都需要有一个key,这个key要是唯一的而且这个key最长120个字符且只能包括a-z,0-9,下划线以及减号一次我们可以采用Java中的UUID来得到key,也可以使用MD5加密网址得到一个key,我这里采用md5方法如下 public class MD5Util {public final static String md5(String pwd) {//用于加密的字符char md5String[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A, B, C, D, E, F };try {//使用平台的默认字符集将此 String 编码为 byte序列并将结果存储到一个新的 byte数组中byte[] btInput pwd.getBytes();// 获得指定摘要算法的 MessageDigest对象此处为MD5//MessageDigest类为应用程序提供信息摘要算法的功能如 MD5 或 SHA 算法。//信息摘要是安全的单向哈希函数它接收任意大小的数据并输出固定长度的哈希值。 MessageDigest mdInst MessageDigest.getInstance(MD5);//System.out.println(mdInst); //MD5 Message Digest from SUN, initialized//MessageDigest对象通过使用 update方法处理数据 使用指定的byte数组更新摘要mdInst.update(btInput);//System.out.println(mdInst); //MD5 Message Digest from SUN, in progress// 摘要更新之后通过调用digest执行哈希计算获得密文byte[] md mdInst.digest();//System.out.println(md);// 把密文转换成十六进制的字符串形式int j md.length;//System.out.println(j);char str[] new char[j * 2];int k 0;for (int i 0; i j; i) { // i 0byte byte0 md[i]; //95str[k] md5String[byte0 4 0xf]; // 5 str[k] md5String[byte0 0xf]; // F}//返回经过加密后的字符串return new String(str);} catch (Exception e) {e.printStackTrace();return null;}} } 各位看官在使用的时候记得把md5String[]中大写的字母改为小写因为key中如果有大写字母验证会不通过。当然你也可以修改DiskLruCache的源码从而让它支持大写字母修改的地方 现在万事俱备我们来把图片缓存起来由于联网是好事操作所以要在新线程中完成完整的方法如下 private void cacheImg() {new Thread(new Runnable() {Overridepublic void run() {String key MD5Util.md5(IMGIP);try {DiskLruCache.Editor editor mDiskLruCache.edit(key);if (editor ! null) {OutputStream out editor.newOutputStream(0);if (downloadImg(IMGIP, out)) {//提交editor.commit();} else {//撤销操作editor.abort();}}/*** 这个方法用于将内存中的操作记录同步到日志文件也就是journal文件当中。* 这个方法非常重要因为DiskLruCache能够正常工作的前提就是要依赖于journal文件中的内容。* 并不是每次写入缓存都要调用一次flush()方法的频繁地调用并不会带来任何好处* 只会额外增加同步journal文件的时间。* 比较标准的做法就是在Activity的onPause()方法中去调用一次flush()方法就可以了*/mDiskLruCache.flush();} catch (IOException e) {e.printStackTrace();}}}).start();} editor.newOutputStream(0);方法有一个参数查看源码我们知道这个参数必须大于0并且小于valueCount前文中valueCount我们已经设置为1了所以这里只能取值0。这个时候打开你的缓存文件夹 /storage/emulated/0/Android/data/应用包名/cache/XXX 里边已经有了我们缓存的数据了 好了数据存下来了接下来就是读取每一个缓存文件都对应一个key读取就是根据这个key来读取 private void showImg() {String key MD5Util.md5(IMGIP); try {DiskLruCache.Snapshot snapShot mDiskLruCache.get(key);if(snapShot!null){InputStream is snapShot.getInputStream(0);Bitmap bitmap BitmapFactory.decodeStream(is);im.setImageBitmap(bitmap);}} catch (IOException e) {e.printStackTrace();} }读取的时候我们最先拿到的是一个Snapshot 对象再根据我们之前传入的参数0拿到缓存文件的流最后把流转换为图片。 到这里大家可能就明白了之前的editor.newOutputStream(0);方法为什么会有一个0的参数了相当于一个标识读取时也传入参数0才能读到我们想要的数据。加入我们的key与缓存文件不是一一对应也就是我们一开始的open方法中传入的不是valueCount的值不是1那么一个key对应多个缓存文件我们要怎么区分就是通过这种方式有兴趣的同学查看源码就一目了然了。 下来就是清除缓存了看方法 private void clearCache() {String key MD5Util.md5(IMGIP);try {mDiskLruCache.remove(key);} catch (IOException e) {e.printStackTrace();} }根据缓存文件的key调用remove方法将该缓存文件移除。 下来是查看缓存大小  像凤凰新闻客户端中显示缓存大小这个数值我们可以通过size()方法直接拿到 private void getCacheSize() {tv.setText(mDiskLruCache.size());}大家应该看到了凤凰新闻还有一个功能就是清除缓存这个功能直接调用delete方法就能实现private void deleteAll() {/*** 这个方法用于将所有的缓存数据全部删除* 其实只需要调用一下DiskLruCache的delete()方法就可以实现了。* 会删除包括日志文件在内的所有文件*/try {mDiskLruCache.delete();} catch (IOException e) {e.printStackTrace();}}所有功能都完成之后我们要记得在onDestory方法中关闭DiskLruCache。Overrideprotected void onDestroy() {super.onDestroy();/*** 这个方法用于将DiskLruCache关闭掉是和open()方法对应的一个方法。* 关闭掉了之后就不能再调用DiskLruCache中任何操作缓存数据的方法* 通常只应该在Activity的onDestroy()方法中去调用close()方法。*/try {mDiskLruCache.close();} catch (IOException e) {e.printStackTrace();}} 最后奉上本文源码下载地址http://pan.baidu.com/s/1kTzSHtd
http://www.zqtcl.cn/news/154597/

相关文章:

  • 东莞商城网站建设哪家便宜wordpress 插件路径
  • 网站服务器 安全快递系统专注快递企业网站开发
  • 旅游网站平台建设的方案深圳移动官网网站建设
  • 如何建设企业人力资源网站网站建设和网络优化的区别
  • 辽宁网站设计影响网站用户体验
  • cms网站如何修改黄山建设网站
  • 宾爵手表官方网站小熊源码网
  • 荥阳网站建设网站建设取得了
  • 江苏省住房和城乡建设厅 官方网站wordpress点击下载
  • 找家里做的工作上哪个网站公司取名三个字推荐
  • 购物网站建设源码wordpress 多多进宝
  • 重庆定制网站建设地址晋安福州网站建设
  • 360建网站了解深圳网站页面设计
  • 哪些网站首页做的好蛋糕网站内容规划
  • 富阳市网站息壤服务器网站打不开
  • 中文建站模板客户做网站嫌贵了
  • 做网站用jquery做网站都有哪些费用
  • 网站知识安卓studio制作一个简单app
  • 一个购物网站开发语言外贸企业
  • 给一个装修公司怎么做网站做网站打开图片慢
  • 互联网三网合一网站建设银川网站建站公司
  • 网站开发需要什么基础网站建设积分
  • 安平做网站的电话装修公司哪家产品好
  • 网站建设内部链接精选资料
  • 廊坊市网站中山网站建设排名
  • 济南网站APPwordpress零基础建站教程视频
  • nodejs和wordpress福建seo快速排名优化
  • 网站开发的主要工作步骤页面跳转流程图
  • 医院网站源码 asp网站店招用什么软件做的
  • 怎样做网站权重龙岗网站制作讯息