当前位置: 首页 > 工具软件 > CSharp Studio > 使用案例 >

studio=C

东方琪
2023-12-01

fragment懒加载

protected View mView;

//页面是否可见
protected boolean isViewInitiated;
//页面是否加载过
protected boolean isVisibleToUser;
//是不是加载过
protected boolean isDataInitiated;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if (mView == null) {
        mView = createContenView(container);
    }
    return mView;
}


@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    if (!isViewInitiated) {
        initView(mView);
        mPresenter = initPresenter();
        mPresenter.onStart(this);
    }
    isViewInitiated = true;
    initData();
}

//设置用户可见提示
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    this.isVisibleToUser = isVisibleToUser;
    initData();
}

@Override
public void onDestroy() {
    super.onDestroy();
    if (mPresenter != null) {
        mPresenter.onEnd();
        mPresenter = null;
    }
    if (mView != null) {
        mView = null;
    }
}

//初始化数据
protected void initData() {
    if (isViewInitiated && isVisibleToUser && (!isDataInitiated)) {
        isDataInitiated = true;
        lazyLoad();
    }
}

//延迟加载
protected abstract void lazyLoad();

//初始化P层
protected abstract P initPresenter();

//初始化视图
protected abstract void initView(View mView);

//创建内容视图
protected View createContenView(ViewGroup container) {
    Object layout = getContextLayout();
    View contentView = null;
    if (layout instanceof View) {
        contentView = (View) layout;
    } else if (layout instanceof Integer) {
        contentView = getLayoutInflater().inflate((Integer) layout, container, false);
    }
    return contentView;
}

//获取布局
protected abstract Object getContextLayout();

NetUtil

private ApiService apiService;

private NetNtil() {
    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
    loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .addInterceptor(loggingInterceptor)
            .addInterceptor(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    SharedPreferences zzz = MyApp.context.getSharedPreferences("ZZZ", Context.MODE_PRIVATE);
                    String userId = zzz.getString("userId", "");
                    String senssionId = zzz.getString("senssionId", "");
                    if (TextUtils.isEmpty(userId) && TextUtils.isEmpty(senssionId)) {
                        return chain.proceed(chain.request());
                    } else {
                        Request build = chain.request().newBuilder()
                                .addHeader("userId", userId)
                                .addHeader("sessionId", senssionId)
                                .build();
                        return chain.proceed(build);
                    }
                }
            }).build();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BaseUrl.Http)
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    apiService = retrofit.create(ApiService.class);
}

private static class NetUtils {
    private static NetNtil netNtil = new NetNtil();
}

public static NetNtil getInstance() {
    return NetUtils.netNtil;
}

public interface Shared<T> {
    void Success(T t);

    void Filed(String error);
}

@SuppressLint("CheckResult")
public void doGet(String url, Map<String, Object> map, Class cla, Shared shared) {
    apiService.GetInfo(url, map)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<ResponseBody>() {
                @Override
                public void accept(ResponseBody responseBody) throws Exception {
                    Gson gson = new Gson();
                    Object o = gson.fromJson(responseBody.string(), cla);
                    if (shared != null) {
                        shared.Success(o);
                    }
                }
            });
}

@SuppressLint("CheckResult")
public void doPoost(String url, Map<String, Object> map, Class cla, Shared shared) {
    apiService.PostInfo(url, map)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<ResponseBody>() {
                @Override
                public void accept(ResponseBody responseBody) throws Exception {
                    Gson gson = new Gson();
                    Object o = gson.fromJson(responseBody.string(), cla);
                    if (shared != null) {
                        shared.Success(o);
                    }
                }
            });
}
 类似资料: