新手--网络访问的json数据存储在本地文件夹, 离线使用
来源:互联网 发布:app ui源码 编辑:程序博客网 时间:2024/06/05 10:41
这里写了一个Demo, 因为看之前的同事写的代码, 在MainActivity中太多,因此抽出了一个专门处理下载的util
具体代码如下(因为我写的很多变量需要在其他类中访问,这里直接使用 public static 来定义的,减少麻烦, 此外,因为我是用的是webservice来获取服务器数据,因此还删除了我的一些其他的内容,免得代码看起来太杂,虽然只多了十几行)
这里因为删除了一些内容,可能会有些错误导包之类的,大家可以按照自己的需要修改! 代码中的json数据并没写,需要自己下载才能正常运行显示.
package com.ontime.netdemo.activity;import org.ksoap2.SoapEnvelope;
import android.content.Context;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.TextView;import com.google.gson.Gson;import com.ontime.netdemo.R;import com.ontime.netdemo.bean.JsonResult;import com.ontime.netdemo.utils.DownLoadUtil;import com.ontime.netdemo.utils.MyApplication;public class MainActivity extends AppCompatActivity { public static TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); DownLoadUtil.downloadFromNet(); //从网络上下载数据到本地,之后直接使用本地数据 tv.setText(DownLoadUtil.loadJsonDatafromLocal(MyApplication.getContext())); } }
package com.ontime.netdemo.utils;import android.content.Context;import android.util.Log;import android.widget.Toast;import com.ontime.netdemo.activity.MainActivity;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;public class DownLoadUtil { public static String jsonData; //从网络获取到的json字符串,这里我就不写获取过程了 private static BufferedWriter bw = null; private static BufferedReader br = null; private static File cacheFile; //存在本地的文件夹 //将json数据保存本地文件夹中 public static void storeJsonData(Context context, String jsonData) { try { cacheFile = new File(context.getFilesDir(), "jsonData"); bw = new BufferedWriter(new FileWriter(cacheFile)); bw.newLine(); bw.write(jsonData); Log.e("storeJson", "保存数据到本地文件夹中:" + cacheFile); bw.close(); } catch (Exception e) { e.printStackTrace(); } finally { bw = null; } } //从本地加载数据 public static String loadJsonDatafromLocal(Context context) { cacheFile = new File(context.getFilesDir(), "jsonData"); StringBuffer stringBuffer = new StringBuffer(); if (cacheFile.exists()) { try { br = new BufferedReader(new FileReader(cacheFile)); while (br.ready()) { stringBuffer.append(br.readLine().trim().toString()); } br.close(); Log.d("loadJsonDatafromLocal", stringBuffer.toString()); return stringBuffer.toString(); } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(MyApplication.getContext(),"读取的文件不存在",Toast.LENGTH_SHORT).show(); } return null; } public static void downloadFromNet() { new Thread(new Runnable() { @Override public void run() { try { //这里是从网络获取json数据的 //调用下载数据的方法,将json字符串作为实参 DownLoadUtil.storeJsonData(MyApplication.getContext(), jsonData); } catch (Exception e) { e.printStackTrace(); Log.d("Exception", e.toString()); } } }).start(); }}
xml文件如下,为了简单,demo中只写了一个可以滑动的 textview, 将本地文件夹中的数据显示
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ontime.netdemo.activity.MainActivity" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv" android:textSize="20sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </ScrollView></RelativeLayout>
阅读全文
1 0
- 新手--网络访问的json数据存储在本地文件夹, 离线使用
- 数据本地存储的文件夹及其路径
- 在Android中使用HTML5本地存储,地理位置,离线应用
- 数据的本地存储——Json
- 新手--从网络加载图片并存储在本地,断开网络后依然可以显示图片
- 利用HttpClient or HttpURLConnection 借助tomcat实现在本地进行网络数据的访问
- 在retrofit访问网络返回json数据添加解析器
- HTML5+的离线本地存储方案
- JSON数据缓存在本地
- PlayerPrefs存储数据在本地的存储位置
- PlayerPrefs存储数据在本地的存储位置
- 使用AsyncTask异步加载类进行访问网络数据json的理解和用法
- 在本地创建json数据供Android客户端使用
- Vue-cli 使用json server在本地模拟请求数据
- Json批量数据的存储和访问和输出
- html5使用local storage存储的数据在本地是以何种形式保存的
- html5之本地存储—JSON对象的使用
- 数据的本地存储
- hihocoder167周-最小公倍数-数组重排
- 查看视频播放时的分辨率
- MAC本地服务器使用和搭建修改
- react 开发规范
- ADI读书活动第四十二期:AD 623使用心得讨论
- 新手--网络访问的json数据存储在本地文件夹, 离线使用
- MT2503资料——FAQ文档
- python学习之argparse模块
- spring线程池ThreadPoolTaskExecutor
- js中的事件委托或是事件代理详解
- helloworld
- python特殊函数 __call__()
- 有关JavaScript笔记
- php获取字符串中最长的连续数字字符串