iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android离线缓存的实例代码
  • 592
分享到

Android离线缓存的实例代码

缓存Android 2022-06-06 04:06:53 592人浏览 独家记忆
摘要

Android做到一定程度,需要考虑缓存的问题,不信可以掏出手机看看淘宝等一些app是否无网的情况下还可以浏览,不过大部分app并没有考虑到这些问题,解决Android的缓存有

Android做到一定程度,需要考虑缓存的问题,不信可以掏出手机看看淘宝等一些app是否无网的情况下还可以浏览,不过大部分app并没有考虑到这些问题,解决Android的缓存有哪些方法呢

1.io流读写文件

2.数据库

3.LruCache和DiskLruCache

个人比较喜欢sd卡文件读写的方式,原因自己可以去分析。

(1)权限


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

(2)判断网络连接的状态,有什么用呢?自己想


if (isNetworkAvailable(MainActivity.this)) {
  Toast.makeText(getApplicationContext(), "当前有可用网络!", Toast.LENGTH_LONG).show();
} else {
  Toast.makeText(getApplicationContext(), "当前wu可用网络!", Toast.LENGTH_LONG).show();
}
public boolean isNetworkAvailable(Activity activity)
{
  Context context = activity.getApplicationContext();
  // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
  ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  if (connectivityManager == null)
  {
    return false;
  }
  else
  {
    // 获取NetworkInfo对象
    NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
    if (networkInfo != null && networkInfo.length > 0)
    {
      for (int i = 0; i < networkInfo.length; i++)
      {
        System.out.println(i + "===状态===" + networkInfo[i].getState());
        System.out.println(i + "===类型===" + networkInfo[i].getTypeName());
        // 判断当前网络状态是否为连接状态
        if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
        {
          return true;
        }
      }
    }
  }
  return false;
}

(3)端口写入数据
 


  if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
  File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
  File saveFile = new File(sdCardDir, "itcast.txt");
  FileOutputStream outStream = new FileOutputStream(saveFile);
  outStream.write(result.getBytes());
  outStream.close();
}

(4)读取数据


File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
File saveFile1  = new File(sdCardDir, "itcast.txt");
BufferedReader br = null;
try {
  br = new BufferedReader(new FileReader(saveFile1));
  String readline = "";
  StringBuffer sb = new StringBuffer();
  while ((readline = br.readLine()) != null) {
    System.out.println("readline:" + readline);
    sb.append(readline);
  }
  String str = sb.toString();

(5)部分完整demo1


if (isNetworkAvailable(MainActivity.this)) {
  Toast.makeText(getApplicationContext(), "当前有可用网络!", Toast.LENGTH_LONG).show();
} else {
  Toast.makeText(getApplicationContext(), "当前wu可用网络!", Toast.LENGTH_LONG).show();
  File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
  File saveFile1  = new File(sdCardDir, "itcast.txt");
  BufferedReader br = null;
  try {
    br = new BufferedReader(new FileReader(saveFile1));
    String readline = "";
    StringBuffer sb = new StringBuffer();
    while ((readline = br.readLine()) != null) {
      System.out.println("readline:" + readline);
      sb.append(readline);
    }
    String str = sb.toString();
    JSONObject jsonObject = new JSONObject(str);
    JSONArray jsonArray = jsonObject.getJSONArray("data");
    for (int i = 0; i < jsonArray.length(); i++) {
      JSONObject object = jsonArray.getJSONObject(i);
      String title = object.getString("name");
      String content = object.getString("description");
      String url = object.getString("picSmall");
      domainBean newsInfo = new domainBean(title, content, url);
      //String path = Environment.getExternalStorageDirectory() + "/" + name;
      //ObjectOutputStream out =new ObjectOutputStream(new FileOutputStream(path));
      //out.writeObject(newsInfo);
      list.add(newsInfo);
      //新建适配器
      beanAdapter = new BeanAdapter(list, MainActivity.this);
      //配置适配器
      xListView.setAdapter(beanAdapter);
      br.close();
    }
  } catch (IOException e) {
    e.printStackTrace();
  } catch (JSONException e) {
    e.printStackTrace();
  }
}

(6)部分完整demo2


 public String loGoutPost(String URL){
    String result = "";
    try {
      String data = URLEncoder.encode("UTF-8");
// + "&passWord=" + URLEncoder.encode(password, "UTF-8");//传递的数据
      URL url = new URL(URL);
//2、url.openConnection()打开网络链接
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//3、设置请求的方式
      conn.setRequestMethod("POST");
      conn.setDoInput(true);//发送POST请求必须设置允许输出
      conn.setDoOutput(true);//发送POST请求必须设置允许输入
      conn.setRequestProperty("Content-Type", "application/x-www-fORM-urlencoded");
      conn.setRequestProperty("Charset", "utf-8");
      conn.setRequestProperty("Content-Length", String.valueOf(data.getBytes().length));
//5、获取输出流
      OutputStream os = conn.getOutputStream();
      os.write(data.getBytes());
      os.flush();
      BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
      String line;
      while((line=in.readLine())!=null){result+="\n"+line;}
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
        File saveFile = new File(sdCardDir, "itcast.txt");
        FileOutputStream outStream = new FileOutputStream(saveFile);
        outStream.write(result.getBytes());
        outStream.close();
      }
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    } catch (ProtocolException e) {
      e.printStackTrace();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return result;
  }
您可能感兴趣的文章:实现Android 获取cache缓存的目录路径的方法Android获取应用程序大小和缓存的实例代码详解Android数据存储之Android 6.0运行时权限下文件存储的思考获取Android应用专属缓存存储目录的实例


--结束END--

本文标题: Android离线缓存的实例代码

本文链接: https://www.lsjlt.com/news/22546.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis缓存实例代码分析
    这篇文章主要介绍“Redis缓存实例代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis缓存实例代码分析”文章能帮助大家解决问题。一、简介1、场景由于数据字典的变化不是很频繁,而且系统对...
    99+
    2023-07-05
  • laravel框架的缓存操作代码实例
    laravel为不同的缓存系统提供了统一的API。缓存配置位于config/cache.php。Laravel目前支持主流的缓存后端有Memcached和Redis等。 主要方法: ...
    99+
    2024-04-02
  • 清除laravel缓存命令代码实例
    清除Laravel(终端)中的缓存 登录运行laravel应用程序的系统并打开终端。然后导航到Laravel应用程序代码。在这里,就可以使用以下命令来清除缓存: 1、清除应用程序缓存...
    99+
    2024-04-02
  • HTML5的离线缓存Manifest是什么
    这篇文章主要介绍“HTML5的离线缓存Manifest是什么”,在日常操作中,相信很多人在HTML5的离线缓存Manifest是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • html5的离线缓存如何使用
    这篇文章主要介绍“html5的离线缓存如何使用”,在日常操作中,相信很多人在html5的离线缓存如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html5的离线缓存如何...
    99+
    2024-04-02
  • SpringBoot使用Caffeine实现缓存的示例代码
    目录为什么要在应用程序中添加缓存在Spring Boot应用程序中实现缓存SpringBoot提供了什么缓存支持?添加生成依赖项缓存配置缓存方法结果测试缓存是否正常工作为什么缓存有时...
    99+
    2024-04-02
  • HTML5离线缓存的作用是什么
    这篇“HTML5离线缓存的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“HTML...
    99+
    2024-04-02
  • 详解SpringBoot缓存的实例代码(EhCache 2.x 篇)
    本篇介绍了SpringBoot 缓存(EhCache 2.x 篇),分享给大家,具体如下:SpringBoot 缓存在 spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),S...
    99+
    2023-05-31
    springboot ehcache hcache
  • react实现组件状态缓存的示例代码
    目录前言一、安装第三方库二、配置操作总结前言 在移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个...
    99+
    2023-02-24
    react 组件状态缓存 react 组件缓存
  • Retrofit + OkHttp缓存处理的示例代码
    通过缓存处理可以有效降低服务器的负荷,加快APP界面加载速度,提升用户体验。Retrofit + OkHttp缓存处理流程是这样的,请求响应之后会在data/data/packageName/cache下建立一个response文件夹,保存...
    99+
    2023-05-30
    retrofit okhttp 缓存
  • 利用Springboot+Caffeine实现本地缓存实例代码
    目录简介Caffeine 介绍思路本文使用开发环境总结简介 之前在项目中遇到了一个新需求,领导让我使用本地缓存,来缓存数据库查出的用户信息,经过一番资料查阅和实验,最终确定了使用Ca...
    99+
    2023-01-07
    spring boot 本地缓存 springboot缓存框架 springboot caffeine
  • QT编写地图实现离线轮廓图的示例代码
    目录一、前言二、功能特点三、体验地址四、效果图五、相关代码 一、前言 离线轮廓图使用起来,就没有在线轮廓图方便了,在线的可以直接传入名称拿到,离线的只能自己绘制了,一般需要用区域轮廓...
    99+
    2024-04-02
  • Java基于LoadingCache实现本地缓存的示例代码
    目录一、 添加 maven 依赖二、CacheBuilder 方法说明三、创建 CacheLoader四、工具类五、guava Cache数据移除一、 添加 maven 依赖 <...
    99+
    2024-04-02
  • 怎么在HTML5中使用manifest实现离线缓存
    本篇文章给大家分享的是有关怎么在HTML5中使用manifest实现离线缓存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。离线访问对基于网络的应用而言越来越重要。虽然所有浏览器...
    99+
    2023-06-09
  • 线程池之newCachedThreadPool可缓存线程池的实例
    java线程池: Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,...
    99+
    2024-04-02
  • mybatis二级缓存的实现代码
    二级缓存需要手动的配置和开启,具体如下在总的配置件中设置开启二级缓存/Mybatis02/config/mybatis-conf.xml<?xml version="1.0" encoding="UTF-8" ?>...
    99+
    2023-05-31
    mybatis 二级缓存 实现代码
  • android设备间实现无线投屏的示例代码
    目录前言投屏服务端的实现投屏客户端的实现效果遇到的错误前言 Android提供了MediaProjection来实现录屏,通过MediaProjection可以获取当前屏幕的视频流,...
    99+
    2024-04-02
  • HTML5离线缓存在tomcat下如何部署可实现图片flash等离线浏览
    这篇文章给大家介绍HTML5离线缓存在tomcat下如何部署可实现图片flash等离线浏览,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 打开一个网页,加...
    99+
    2024-04-02
  • Android实现webview实例代码
    webview是一个很简单的功能,代码没有什么逻辑上的难度,只是需要注意权限上的问题。其实在安卓编程的过程当中,权限问题可以算是出现的比较多的BUG。MainActpackage com.lxq.webview01;import andro...
    99+
    2023-05-31
    android webview roi
  • Android recyclerview实现纵向虚线时间轴的示例代码
    效果图 代码  package com.jh.timelinedemo; import android.content.Context; import andro...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作