現(xiàn)在都使用mvp進(jìn)行android開發(fā)。

創(chuàng)新互聯(lián)建站專注于登封網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供登封營銷型網(wǎng)站建設(shè),登封網(wǎng)站制作、登封網(wǎng)頁設(shè)計(jì)、登封網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造登封網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供登封網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
詳細(xì)例子請(qǐng)參考android學(xué)習(xí)手冊(cè),360手機(jī)助手中可以下載,里面有108個(gè)android例子,源碼文檔都可在里面看,里面有詳細(xì)介紹這個(gè)的框架。
MVP模式是什么?MVP 是從經(jīng)典的模式MVC演變而來,它們的基本思想有相通的地方:Controller/Presenter負(fù)責(zé)邏輯的處理,Model提供數(shù)據(jù),View負(fù)責(zé)顯示。
MVC和MVP的區(qū)別?
為什么會(huì)出現(xiàn)MVP模式呢?這是因?yàn)樵械腗VC模式有一些短板。比如在android開發(fā)中,activity充當(dāng)著MVC中Controller的角色,但是在實(shí)際開發(fā)中處理view的邏輯和角色。當(dāng)業(yè)務(wù)界面復(fù)雜時(shí)我的activity會(huì)顯得很龐大。于是出現(xiàn)了MVP模式,它新增了一個(gè)Presenter角色用于處理數(shù)據(jù)和界面的模型以及邏輯,Activity僅僅用于展示界面和用戶交互,這樣就解決了MVC中角色不清的局面。
所以,MVP與MVC的重大區(qū)別:在MVP中View并不直接使用Model,它們之間的通信是通過Presenter (MVC中的Controller)來進(jìn)行的,所有的交互都發(fā)生在Presenter內(nèi)部,而在MVC中View會(huì)直接從Model中讀取數(shù)據(jù)而不是通過 Controller。
在MVC里,View是可以直接訪問Model的!從而,View里會(huì)包含Model信息,不可避免的還要包括一些業(yè)務(wù)邏輯。 在MVC模型里,更關(guān)注的Model的不變,而同時(shí)有多個(gè)對(duì)Model的不同顯示,即View。所以,在MVC模型里,Model不依賴于View,但是View是依賴于Model的。不僅如此,因?yàn)橛幸恍I(yè)務(wù)邏輯在View里實(shí)現(xiàn)了,導(dǎo)致要更改View也是比較困難的,至少那些業(yè)務(wù)邏輯是無法重用的。
MVC模式結(jié)構(gòu)
Model 業(yè)務(wù)邏輯和實(shí)體模型
Controller 對(duì)應(yīng)Activity
View 視圖以及布局文件
MVP模式結(jié)構(gòu)
Model: 業(yè)務(wù)邏輯和實(shí)體模型
View:用戶交互和視圖顯示,在android中對(duì)應(yīng)activity
Presenter: 負(fù)責(zé)完成View于Model間的邏輯和交互
小節(jié):MVP模式相當(dāng)于在MVC模式中又加了一個(gè)Presenter用于處理模型和邏輯,將View和Model完全獨(dú)立開,在android開發(fā)中的體現(xiàn)就是activity僅用于顯示界面和交互,activity不參與模型結(jié)構(gòu)和邏輯,
#### 實(shí)戰(zhàn)
谷歌官網(wǎng)給了我們一個(gè)MVP模式實(shí)戰(zhàn)的例子,它是一個(gè)類似記事本的app,源碼地址在:
官方案例的框架圖如下:
沒問題的,你改完如果引用不成功就點(diǎn)擊build選項(xiàng)卡clean一下project
項(xiàng)目下layout文件越來越多,每次查找起來麻煩,分個(gè)包可以快速查找,記錄一下分包的方法,免得忘記了。
1.找來項(xiàng)目下layout文件夾,按shift+f6(快捷鍵),重命名為layouts。
2.在layouts下建立文件夾 activity,item。
3.在activity下建立layout文件夾,item也一樣。
4.這個(gè)時(shí)候,正真的layout文件夾建立完畢,可以在layout文件下建立xml了。
5.在app的build.gradle中的 Android 節(jié)點(diǎn)中,加入
6.重新編譯,ok。
這里只做Android Studio分包配置簡(jiǎn)單的介紹。
第一步:
在Gradle build文件中做如下配置:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}1234567891011121314151617181912345678910111213141516171819
添加兩句代碼:
(1)multiDexEnable true
(2)compile 'com.android.support:multidex:1.0.0'
第二步:
在AndroidManifest.xml文件中做如下配置:
?xml version="1.0" encoding="utf-8"?
manifest xmlns:android=""
package="com.example.android.multidex.myapplication"
application
...
android:name="android.support.multidex.MultiDexApplication"
...
/application
/manifest123456789123456789
如果你要定義自己的Application,或者已經(jīng)有了自定義Application,那么不需要在application節(jié)點(diǎn)中用android.support.multidex.MultiDexApplication,而是用自己的Application類的全名即可,而且自定義的Application也不需要繼承MultiDexApplicatoin。
第三步:
如果有自定義的Application,那么在自定義的Application類中,重寫attachBaseContext(),并且在其中調(diào)用super.attachBaseContext(),然后調(diào)用MultiDex.install(this) ,然后在該方法上加上@Override注解,既然是重寫方法,最好加上這個(gè)注解,不過Android Studio會(huì)自動(dòng)加上。
有兩點(diǎn)可以注意:
attachBaseContext()是在ContextWrapper類中的。而MultiDexApplication繼承Application,就是如第二步一樣重寫了attachBaseContext()方法。
不需要另外在libs中添加android-support-multidex.jar,否則會(huì)報(bào)異常。
分享題目:android分包,Android外包
標(biāo)題路徑:http://chinadenli.net/article10/dsiocgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、域名注冊(cè)、Google、微信小程序、動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)