安卓中缓存的工具类

来源:互联网 发布:淘宝网长款羽绒服 编辑:程序博客网 时间:2024/05/19 09:48
public abstract class BaseData {    public void getData(String path) {        String data = getDataFromLocal(path);        if (TextUtils.isEmpty(data)) {            //如果本地没有数据,则请求网络            getDataFromNet(path);        } else {            //成功从本地获取到数据            setResultData(data);        }    }    /**     * setResultData:得到获取的数据     * setFailData : 数据请求失败     * @param data     */    protected abstract void setResultData(String data);    protected abstract void setFailData(String error_type);    /**     * 网络请求数据     * @param path     */    private void getDataFromNet(final String path) {        RequestParams requestParams = new RequestParams(path);        x.http().get(requestParams, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(final String s) {                setResultData(s);//将数据作返回                CommonUtils.executeRunnalbe(new Runnable() {                    @Override                    public void run() {                        saveDataToLocal(path, s);//将数据存入本地                    }                });            }            @Override            public void onError(Throwable throwable, boolean b) {                setFailData("网络请求错误");            }            @Override            public void onCancelled(CancelledException e) {                setFailData("网络请求取消");            }            @Override            public void onFinished() {            }        });    }    /**     * 获取本地数据     *     * @param path     * @return     */    private String getDataFromLocal(String path) {        BufferedReader bufferedReader = null;        try {            File cacheDir = CommonUtils.getContext().getCacheDir();            File file = new File(cacheDir, Md5Encoder.encode(path));            bufferedReader = new BufferedReader(new FileReader(file.getAbsolutePath()));            StringBuilder stringBuilder = new StringBuilder();            String line = null;            while ((line = bufferedReader.readLine()) != null) {                stringBuilder.append(line);            }            return stringBuilder.toString();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (bufferedReader != null) {                try {                    bufferedReader.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return null;    }    /**     * 将数据写入本地     *     * @param path     * @param data     */    private void saveDataToLocal(String path, String data) {        BufferedWriter bufferedWriter = null;        try {            File cacheDir = CommonUtils.getContext().getCacheDir();            File file = new File(cacheDir, Md5Encoder.encode(path));            bufferedWriter = new BufferedWriter(new FileWriter(file.getAbsolutePath()));            bufferedWriter.write(data);            bufferedWriter.flush();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (bufferedWriter != null) {                try {                    bufferedWriter.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}

2 0