111111111111


public class App extends Application{

    private static App app;
    private DaoMaster daoMaster;
    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        app = App.this;
        Fresco.initialize(this);
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "users", null);
        SQLiteDatabase db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }
    public static App getInstance(){
        if (null == app){
            synchronized (App.class){
                if (null == app){
                    app = new App();
                }
            }
        }
        return app;
    }

    public DaoSession getDaoSession() {
        return daoSession;
    }
}

public class OKHttpUtils {
    public static OKHttpUtils instance;
    public OkHttpClient okHttpClient;

    public OKHttpUtils(){
        if (null == instance){
            synchronized (OkHttpClient.class){
                if (null == instance){
                    okHttpClient = new OkHttpClient.Builder()
                            .addInterceptor(new LoggingInterceptor())
                            .build();
                }
            }
        }
    }

    public static OKHttpUtils getInstance() {
        if (null == instance){
            synchronized (OKHttpUtils.class){
                if (null == instance){
                    instance = new OKHttpUtils();
                }
            }
        }
        return instance;
    }

    public void get(String urlString, Callback callback){
        Request request = new Request.Builder().url(urlString).build();
        okHttpClient.newCall(request).enqueue(callback);
    }
    public void post(String urlString, FormBody formBody,Callback callback){
        Request request = new Request.Builder().url(urlString).method("POST",formBody).build();
        okHttpClient.newCall(request).enqueue(callback);
    }

    class LoggingInterceptor implements Interceptor {

        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            String method = request.method();
            Log.d("LoggingInterceptor", method);
            Response response = chain.proceed(request);
            return response;
        }
    }
}

public class IModelImpl implements ICorter.IModel {
    private static final String URL = "https://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1";
    @Override
    public void requestMsg(final onCallBack onCallBack) {
        final UserDao userDao = App.getInstance().getDaoSession().getUserDao();
        List<User> users = userDao.loadAll();
        if (users.size() > 0 ){
            onCallBack.requestData(users);
            return;
        }
        OKHttpUtils.getInstance().get(URL, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                onCallBack.requestData(null);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String responseMsg = response.body().string();
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(responseMsg, UserBean.class);
                List<UserBean.ResultsBean> results = userBean.getResults();
                List<User> userList = new ArrayList<>();
                for (int i = 0; i < results.size() ; i++) {
                    String desc = results.get(i).getDesc();
                    String url = results.get(i).getUrl();
                    User user = new User();
                    user.setImgUrl(url);
                    user.setTitle(desc);
                    userList.add(user);
                }
                onCallBack.requestData(userList);
                userDao.insertInTx(userList);
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/chy521xin/article/details/82318578