Android持久化存储的几种方式

在Android开发中,数据的持久化是肯定会用到,而持久化的方法大致有五种,分别是文件存储、网络存储、SharedPreferences、Sqlit数据库存储和ContentProvider。这五种存储方式各有各的优点,下面我将一一对它们进行介绍。

1.文件存储

在应用开发中有一个场景,就是从网络中加载图片。我们知道,网络请求都需要时间,如果网络速度不够快,或者没有网络将会造成图片加载速度慢、甚至无法加载成功的问题。在Android中的处理方式其实是对已加载的图片进行一个缓存,包括内存缓存和硬盘缓存两种方式。而硬盘缓存就是运用了在本地文件存储的方式。
我们来看一段代码。

public void getImage(String url){
        //从url网络路径解析出文件的名字。
        filename=url.substring(url.lastIndexOf("/")+1,url.length());
        File file_ima=new File(file_url+filename);
        //判断文件是不是存在
        if(file_ima.exists()){
        //存在直接从本地加载
            Toast.makeText(getApplication(),"从本地加载",Toast.LENGTH_LONG).show();
            iv_ima.setImageBitmap(BitmapFactory.decodeFile(file_url+filename));
            return;
        }
        //不存在的话,使用下载线程,对图片进行下载,进行存储。
        DownloadFile thread=new DownloadFile(mHandler,url,file_url+filename);
        thread.start();
}

上面代码,是通过对传入图片的网络路径对图片的名字进行解析,判断该图片在本地文件中是否存在,如果存在,则直接从本地加载。而如果不存在则会调用网络线程对图片进行加载。

public class DownloadFile extends Thread
{
   
    Handler mHandler;
    String mUrl;
    String mPath;
    public DownloadFile(Handler handler, String url, String path){
        mHandler=handler;
        mUrl=url;
        mPath=path;
    }

    @Override
    public void run()
    {
        super.run();
        downLoadFromUrl(mUrl,mPath);
    }

    public  void downLoadFromUrl(String urlStr, String path) {
        if(urlStr==null){
            return;
        }
        URL url = null;
        try {
            url = new URL(urlStr);
            Log.e("music", urlStr);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //设置超时间为3秒
            conn.setConnectTimeout(3 * 1000);
            //防止屏蔽程序抓取而返回403错误
            //conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值