GreenDao数据库缓存

package dw.dw.com.greendaosplite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import java.util.List;

import dw.dw.com.greendaosplite.greendao.DaoMaster;
import dw.dw.com.greendaosplite.greendao.DaoSession;

public class SqUtils {
    private static  SqUtils ourInstance;
    private SQLiteDatabase db;
    private DaoSession daoSession;
    private DaoMaster daoMaster;

    public static SqUtils getInstance() {
        if (ourInstance == null){
            ourInstance = new SqUtils();
        }
        return ourInstance;
    }

    private SqUtils() {
    }

    //初始化
    public void init(Context context,String dbname){
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(context,dbname);
        db = devOpenHelper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }
    //增
    public void insert(Bean sqliteBean){
        daoSession.getBeanDao().insert(sqliteBean);
    }
    //查
    public List<Bean> query(){
        return daoSession.getBeanDao().loadAll();
    }
    public void deleteAll(){
        daoSession.getBeanDao().deleteAll();
    }
}
package dw.dw.com.greendaosplite;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.google.gson.Gson;

import java.util.List;

import dw.dw.com.greendaosplite.adapter.Myadapter;
import dw.dw.com.greendaosplite.bean.ImageBean;
import dw.dw.com.greendaosplite.net.OkHttp;

public class MainTwoActivity extends AppCompatActivity {

    private String url = "http://www.zhaoapi.cn/ad/getAd";
    private RecyclerView recyclerView;
    private Myadapter myadapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.acitivty_maintwo);
        recyclerView = findViewById(R.id.recyclerView);
        myadapter = new Myadapter(this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(myadapter);
        if (isNetworkAvalible(this)){
            doHttp();
        }else{
            String data = SqUtils.getInstance().query().get(0).getData();
            Gson gson = new Gson();
            ImageBean imageBean = gson.fromJson(data, ImageBean.class);
            List<ImageBean.DataBean> list = imageBean.getData();
            myadapter.setList(list);
        }
    }

    private void doHttp() {
        new OkHttp().get(url).setNetCallBack(new OkHttp.NetCallBack() {
            @Override
            public void onSuccess(String data) {
                SqUtils.getInstance().deleteAll();
                Bean bean = new Bean();
                bean.setData(data);
                SqUtils.getInstance().insert(bean);
                Gson gson = new Gson();
                ImageBean imageBean = gson.fromJson(data, ImageBean.class);
                List<ImageBean.DataBean> list = imageBean.getData();
                myadapter.setList(list);
            }
        });
    }
    /**
         * 判断网络情况
         *
         * @param context 上下文
         * @return false 表示没有网络 true 表示有网络
         */
        public boolean isNetworkAvalible(Context context) {
            // 获得网络状态管理器
            ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            if (connectivityManager == null) {
                return false;
            } else {
                // 建立网络数组
                NetworkInfo[] net_info = connectivityManager.getAllNetworkInfo();

                if (net_info != null) {
                    for (int i = 0; i < net_info.length; i++) {
                        // 判断获得的网络状态是否是处于连接状态
                        if (net_info[i].getState() == NetworkInfo.State.CONNECTED) {
                            return true;
                        }
                    }
                }
            }
            return false;
        }
}

猜你喜欢

转载自blog.csdn.net/qq_42234894/article/details/83720329
今日推荐