少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述Android MVP + 娉涘瀷锛屽疄鐜颁簡鍙嬪ソVP浜や簰鍙夾ctivity娼滃湪鐨勫唴瀛樻硠闇茬殑浼樺寲相关的知识,希望能为你提供帮助。
鏍囩锛?/p>銆€銆€Android MVP绮楁潵宸茬粡鏈夋鏃堕棿浜嗭紝鍦ㄩ」鐩腑鎴戜篃澶氬灏戝皯鐢ㄤ簡涓€浜涳紝涓嶅緱涓嶈浠g爜浣跨敤杩欑妯″紡鍚庯紝鏉′緥纭疄娓呮櫚浜嗗ソ澶氾紝鏁翠釜娴佺▼鐪嬭捣鏉ユ湁鐐瑰悇鍙稿叾鑱岀殑鎰熻(鍙︿竴绉嶇殑java闈㈠悜瀵硅薄鐨勬柟寮?銆?/span>
銆€銆€涓嶈繃杩欓噷鏄垜鍦ㄤ娇鐢ㄨ繃绋嬩腑閬囧埌鐨勪竴鐐瑰皬浼樺寲锛岀洿鎺ヨ繘鍏ヤ唬鐮佹潵璇村惂锛侊紒锛?/span>
1 import java.lang.ref.Reference; 2 import java.lang.ref.WeakReference; 3 4 public class Presenter < T> { 5 6private Reference< T> mReference = null; 7 8public void onAttach(T view){ 9mReference = new WeakReference< T> (view); 10}; 11 12public boolean isAttach(){ 13return null != mReference & & null != mReference.get(); 14} 15 16public void onDettach(){ 17if(null != mReference){ 18mReference.clear(); 19mReference = null; 20} 21}; 22 }
銆€銆€涓婅堪浠g爜鎴戣繖閲岀畝鍗曡涓嬶紝娉涘瀷鐨勫畾涔夋槸涓轰簡缁橝ctivity鍙婂叾瀛愮被澹版槑浣跨敤(涓哄暐杩欎箞璇达紝鍥犱负presenter鏄笓闂ㄩ拡瀵筕iew宸ヤ綔鐨勶紝浠栫殑瀹氫箟蹇呴』渚濊禆浜嶸iew鐨勫姛鑳芥潵瀹屾垚.),杩欓噷鍙互鐪嬪埌鎴戠畝鍗曟槸閲囩敤浜嗗急寮曠敤鐨勬柟寮忓幓鍙傛暟杩欎釜View鐨勫瀵硅薄寮曠敤,杩欓噷鎴戜富瑕佽€冭檻鍒颁竾涓€Activity涓嶈蛋onDestroy鏂规硶锛屼絾鏄▼搴忓嵈閫€鍑轰簡锛岀幇瀹炰腑杩欑鍙兘鎬у緢灏忥紝涓嶈繃纭疄鏄瓨鍦ㄧ殑锛屽急寮曠敤涓昏灏辨槸涓轰簡杩欎釜鐩殑鑰屽姞鐨勩€?/span>
銆€銆€绱ф帴鐫€涓€璧锋潵鐪婤aseActivity
1 public abstract class BaseActivity< V, T extends Presenter< V> > extends Activity{ 2 3protected T mPresenter; 4 5@Override 6protected void onCreate(Bundle savedInstanceState) { 7super.onCreate(savedInstanceState); 8mPresenter = createPresener(); 9mPresenter.onAttach((V) this); 10} 11 12 13@Override 14protected void onDestroy() { 15// TODO Auto-generated method stub 16super.onDestroy(); 17mPresenter.onDettach(); 18} 19 20protected abstract T createPresener(); 21 }
銆€銆€杩欓噷鍙湅鍒帮紝杩欓噷鐢变簬鏄疊aseActivity锛屾垜甯屾湜浠栧幓鍋氱殑宸ヤ綔灏辨槸鍦ˋctivty鍒涘缓鐨勬椂鍊欏厛鍒涘缓Presenter瀵硅薄锛屽苟鍛婄煡Presenter鑷繁宸茬粡琚垱寤猴紝鍚屾椂灏嗚嚜韬敞鍏ョ粰Presenter锛屼互渚夸簬瀹屾垚P鍒癡鐨勫洖璋冨伐浣? T extent Presenter鏄负浜嗕繚璇乧reatePrenter杩斿洖鐨勪簨Presenter 鐨勫瓙绫诲璞? 8琛屾病鏈夊垽绌虹洿鎺ヤ娇鐢ㄧ殑鐩殑鏄负浜嗘洿濂界殑浣跨敤MVP鐨勬€濇兂锛屾墍浠ヨ繖閲岀殑鎶借薄鏂规硶鏄笉鍏佽杩斿洖null鐨勶紝杩欐槸鎴戠殑涓汉璁捐锛屼笉杩囧ぇ瀹惰鏄笇鏈涜繑鍥瀗ull锛屽彲浠ヨ嚜宸卞湪杩涗竴姝ョ殑鍧愪笅澶勭悊.
銆€銆€銆€涔嬩笂鐨勭畝鍗曠殑VP浜や簰锛屾垜鏄牴鎹釜浜洪渶姹傚仛鐨勫畾涔?Attach, Dettach, isAttach).
銆€銆€銆€
【Android MVP + 娉涘瀷锛屽疄鐜颁簡鍙嬪ソVP浜や簰鍙夾ctivity娼滃湪鐨勫唴瀛樻硠闇茬殑浼樺寲】
推荐阅读
- android 常用URI
- 在 Android studio 中 配置Gradle 做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”
- Android问题-新电脑新系统WIN764位上安装简版本的XE8提示“Unit not found: 'System'”
- react native android 开发,基础配置笔记。
- Android Studio一直build一直refreshing一直buiding gradle project into的终极解决办法
- Android Studio 如何使用jni
- Android学习总结——系统提示对话框(AlertDialog)
- Android 手机卫士--平移动画实现
- android的Service的实例