1.1.1
安卓开发工作也有一段时间,最近项目进展不太顺利,闲着觉得现在的项目框架不太令人满意。 于是,自己重建了项目。 首先,说一下我们以前的项目框架结构,不能说是优点,也可以继续维护,但总体来看还有很多不足之处,那是由模块划分出来的。 例如是用户、主页等。 各模块下分别有bean数据的实体类
1 .首先,名为bean的模块是一个实体类,每个字段都有许多set方法对应于一个方法,因此项目中仍有十几MB的方法数超过65K。
2 .接下来,我们的视图层不仅展示了数据,dldxmt也做了请求数据的处理。 这将导致整个页面的代码行数超过约2000行,极大地增加了页面的复杂性。
对于这两个问题,没有必要再继续维护了
Paste_Image.png
1.1.2
接下来,记录我自己重建的体系结构,以便下次使用。
大部分APP都是索取网络数据、展示数据,要建立这种关系,我们为什么不把他分开,因为以前是索取数据、展示数据并在一个页面中操作? 于是我用一个叫事件总线的库发布数据,没有接触过的朋友用谷歌,很容易就能买到。 先给整个项目开个图
Paste_Image.png
Paste_Image.png
1.2.3以下是我的体系结构中使用的依赖关系库: 这三个当然最重要,还有图像缓存框架。 正在使用Fresco
从属关系
compile ' org.green robot :事件总线:3.0.0 ' /事件总线事件调度程序
compile ' com.Alibaba : fast JSON :1.2.12 '/JSON分析
compile ' com.loopj.Android : Android-async-http :1.4.9 '/async网络请求
}
1.2.4
我觉得接下来开始写代码,只要通过整个流程,你就能理解。 首先写数据模型层,也就是bean类
Paste_Image.png
首先编写并继承bean的基类
公共类基本响应
{
公共字符串消息;
公共布尔业务;
公共字符串错误代码;
@Override
公共字符串tostring (
{
返回'基本响应
{ '
'消息=' '消息'"
',success=' success
',错误代码=' '错误代码'' '
() );
}
}
接下来是用户的实体类
publicclassuserbeanextendsbaseresponse {
公共数据传输数据;
公共静态类数据传输{
公共字符串名称;
公共字符串密码;
@Override
公共字符串字符串
返回' datastring { ' name=' ' name '' ',
password='' password '' '
() );
} }
已开始网络数据操作。 在User类中进行数据请求操作
公共语音获取用户界面(
sync http客户端. setconnecttimeout (connect _ time out;
sync http客户端. post (URL _ visit _ token,new JsonHttpResponseHandler () {
@Override //数据请求成功
publicvoidonsuccess (int status code,Header[] headers,JSON对象响应) {
super.onsuccess(statuscode,headers,response );
stringresponsestring=response.tostring (;
用户bean bean;
if (空!=响应响应. optstring (错误代码).equals )0)! textutils.isempty (response.optstring (' data ' ) ) )
bean=JSON.parse object (响应字符串,Userbean.class );
} else {
bean=新用户bean (;
bean.error code=response.optstring (error code );
bean.message=response.optstring (' message );
bean.success=response.opt boolean (success );
}
log.e(tag,“请求”bean.success );
EventBus.getDefault ().post ) bean; //发送数据
}
@Override //数据请求失败
publicvoidonfailure (int status code,Header[] headers,String responseString,可移植故障诊断) {
super.onfailure(statuscode,headers,responseString,throwable );
Userbean bean=new Userbean (; //
bean.errCode=responseString .
bean.message=throwable.getmessage (;
log.e(tag,' getUserInfo failure ';
EventBus.getDefault ().post ) bean; //发送数据
}; ); }
以下是每页的接收数据。 进入页面后注册事件总线
publicclassleadinpagesacextendsactivity {
@Override
protectedvoidoncreate (边界维护实例state )。
super.oncreate (savedinstancestate;
setcontentview (r.layout.activity _ main;
EventBus.getDefault ().register ) ) this; //need
}
}
开始接收数据
@Subscribe
Ublicvoidonevent(Userbeanbean ) {
if(bean.success==true ) {
if (! textutils.isempty (bean.data.name ) ) }
String name=bean.data.name;
string password=bean.data.password;
}
好了,整个过程就是这样,我还是个初学者。 如果有不好的事情请告诉我。