仿京东的一个MVC框架的使用

来源:互联网 发布:r软件使用统计分析 编辑:程序博客网 时间:2024/05/17 03:59

1.application的信息

在线面中initDB( )就是用来初始化一个数据库的。

public class JDApplication extends LitePalApplication {    public RUserInfo mUserInfo;    public static RequestQueue mRequestQueue;    @Override    public void onCreate() {        super.onCreate();        initDB();        mRequestQueue = Volley.newRequestQueue(this);    }    private void initDB() {        //初始化一个db        LitePal.initialize(this);    }}

2.Veiw层

2.1BaseActivity的相关

在实现了BaseActivity后,会自动的实现abstract的方法。

  • onModelChanged()方法:这个方法是一个回调的方法。调用这个而方法后,
/** * @author Holly * @time 2017/2/6  18:50 * @desc ${TODD} */public abstract class BaseActivity extends FragmentActivity implements IModelChangeListener {    protected BaseController mController;    /*-----------创建一个handler---------*/   Handler mHandler = new Handler(){        public void handleMessage(Message msg){            handleUIMessage( msg);        }    };    protected void handleUIMessage(Message msg) {        //让子类去实现相应的逻辑    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //去掉标题        requestWindowFeature(Window.FEATURE_NO_TITLE);    }    //创建一个抽象的方法,让所有的子类都去实现    protected abstract void initUI();    protected void initController() {    }    @Override    public void onModelChanged(int action,Object returnBean) {       //这个地方要把bean传到主线程中        mHandler.obtainMessage(action, returnBean).sendToTarget();    }    public long getUserId(){        JDApplication application = (JDApplication) getApplication();        return application.mUserInfo.getId();    }}

2.2BaseFragment的设置

类比上面的BaseActivity,可以如下

public abstract class BaseFragment extends Fragment implements IModelChangeListener {    protected BaseController mController;    /*-----------创建一个handler---------*/    Handler mHandler = new Handler() {        public void handleMessage(Message msg) {            handleUIMessage(msg);        }    };    protected void handleUIMessage(Message msg) {        //让子类去实现相应的逻辑    }    //创建一个抽象的方法,让所有的子类都去实现    protected void initController() {    }    @Override    public void onModelChanged(int action, Object returnBean) {        //这个地方要把bean传到主线程中        mHandler.obtainMessage(action, returnBean).sendToTarget();    }    protected abstract void initUI();    public View findViewById(int id) {        View view = getActivity().findViewById(id);        return view;    }    public JDApplication getJDApplication()    {        JDApplication application = (JDApplication) getActivity().getApplication();        return application;    }}

3.C层的设置—BaseController

  • sendAsyncMessage(final int action, final Object… values):这个方法是用来在子线程中调用起来的,会在View层发送网络请求的时候调用,也就是使用了一个handMessage的方法。handMessage的方法由具体的ccotroller子类去实现。
public abstract class BaseController {    //创建一个上下文    protected Context mContext;    public BaseController(Context context) {        mContext = context;    }    protected IModelChangeListener mListener;    /*-----------专门用来创建线程---------*/    public void sendAsyncMessage(final int action, final Object... values) {        //在子线程中执行这个方法        new Thread() {            public void run() {                handMessage(action, values);            }        }.start();    }    protected abstract void handMessage(int action, Object... values);    public void setOnModelListener(IModelChangeListener listener) {        //进行监听        mListener = listener;    }}
0 0
原创粉丝点击