1.1重新規(guī)劃Android項(xiàng)目結(jié)構(gòu)
基本上項(xiàng)目目錄盡可能細(xì)分驹饺,容易快速查找界面∏恚現(xiàn)在感覺(jué)mvp模式不錯(cuò),可以采用赏壹。
1.2位Activity定義新的生命周期
核心:?jiǎn)我宦氊?zé)么伯。一個(gè)類或方法,只做一件事情卡儒。
將onCreate分為三個(gè)子方法并為抽象的abstract:
- initVariables():初始化變量田柔,包括Intent帶的數(shù)據(jù)和Activity俐巴。
- initViews(savedInstanceState):加載layout布局文件,初始化控件硬爆,為控件掛上時(shí)間方法欣舵。
- initDatas():調(diào)用MobileApi獲取數(shù)據(jù)。
1.3統(tǒng)一事件編程模型
1缀磕、不要用switch...case...這種方式缘圈,也就是說(shuō),除了在initViews中袜蚕,其他地方不要出現(xiàn)R.id.xxx這種糟把。
2、點(diǎn)擊事件直接在initViews中初始化牲剃,而且事件具體內(nèi)容分離遣疯,獨(dú)立私有方法。比如:
mBtn = (Button) findViewById(R.id.button2); mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { test(0); } });
1.4實(shí)體化編程
1.4.1在網(wǎng)絡(luò)請(qǐng)求中使用實(shí)體
網(wǎng)路編程中盡量把網(wǎng)絡(luò)返回?cái)?shù)據(jù)構(gòu)建成實(shí)體類凿傅,而不是用到再get值缠犀。
在使用fastJson中,可能會(huì)出現(xiàn)下面問(wèn)題:
1)加了符號(hào)Annotation的實(shí)體屬性聪舒,一使用就崩潰辨液。
2)當(dāng)有泛型屬性時(shí),一使用就崩潰箱残。
這很有可能是混淆沒(méi)有加以下配置:
-keepattributes Signature //避免混淆泛型 -keepattributes *Animation* //不混淆注解
1.4.2實(shí)體生成器
快速理清Json-->實(shí)體類
可用EnityGenerater工具滔迈,也可用網(wǎng)絡(luò)上JSON解析即可。
1.4.3在頁(yè)面跳轉(zhuǎn)中使用實(shí)體
使用實(shí)體類傳遞數(shù)據(jù)被辑,序列化亡鼠。
1.5Adapter模板
可以抽取公共Adapter來(lái)使用。
也可以規(guī)定Adapter都必須集成自BaseAdapter敷待。
當(dāng)然ViewHolder是不可少的。
1.6類型安全轉(zhuǎn)換函數(shù)
一般來(lái)講大部分轉(zhuǎn)化在null仁热、數(shù)組或其它越界較多榜揖。
所以對(duì)于MobileAPI返回的數(shù)據(jù)中,需要加工或者敏感信息(比如金錢)應(yīng)該對(duì)數(shù)據(jù)進(jìn)行判斷抗蠢,或進(jìn)行try..catch捕獲錯(cuò)誤并進(jìn)行處理举哟,比如發(fā)送錯(cuò)誤日志給服務(wù)器。也就是說(shuō)錯(cuò)誤信息有兩種迅矛,一種沒(méi)有捕獲的妨猩,可以用友盟類似工具處理,另外一種捕獲的可根據(jù)情況判斷是否提交服務(wù)器秽褒。