mvp'de, bir etkinliğin referansını zayıf bir referansta kaydediyoruz. Referansı kaybedersek WeakReference<Activity> view = new WeakReference<Activity>(activity);
. geri alabilir miyiz?Android MVP WeakRefrence
cevap
Activity
numaranızın referansını kaybederseniz, etkinlik çöp toplandı demektir ve artık mevcut değildir. Var olmayan bir yere geri dönemezsin.
Ex. Bu, yapılandırma değişikliği nedeniyle gerçekleşirse, yeni bir activity
oluşturulduğu anlamına gelir.
Yeni oluşturulmuş görünümü aynı sunucuya eklemenin bir yolu var.
Size yardımcı olacak kütüphaneler arıyorsanız, mosby ve nucleus numaralı telefonlara göz atın.
MVP
için bir başvuru kaydetmeniz gerektiğini hiç sanmıyorum - zor veya zayıf olup olmadığı önemli değil!
Bu başvuruyu Presenter
numaralı belgede sakladığınızı varsayıyorum. Katmanları gerçekten ayrıştırmak için, View
(Activity
) 'nuzu açıklayan bir arayüz oluşturmalı ve bunu etkinlik yerine kullanmalısınız.
Yani yaparım:
SizinActivity
public interface LoginView {
displayUsernameError(String error);
displayPasswordError(String error);
openMainScreen();
}
yukarıdan arabirimini uygulamalıdır. sizin sunucu olarak
public class LoginActivity implements LoginView {
...
}
ederdiniz: Bunu yapmanın
class LoginPresenter {
private LoginView mView;
public LoginPresenter(LoginView view) {
mView = view;
}
public onLoginButtonClicked(String username, char[] password) {
...
mView.openMainScreen();
}
}
Acil faydalar: Farklı katmanlar gerçekten ayrıştırıldığı
.
Activity
'u (Fragments
'u kullanmaya karar verdiğinizde)Presenter
numaranıza dokunmadan değiştirebilirsiniz.Sunucunuz sadece
JUnit
kullanarak tamamen test edilebilir! Sizin etkileşimlerinizi doğrulamak için herhangi bir şey fantezi kullanmanıza gerek yok,alay için sadece düzMockito
.
Bir diğer nokta dikkat - Eğer senin Presenter
sizin View
uzun yaşamak istediğinden emin misin? Önlenemediğinde bazı durumlar vardır, ancak çoğu durumda aynı ömürleri vardır - View
imha edildiğinde Presenter
da olmalıdır.
mView'iniz, LoginActivity'nin güçlü bir referansıdır. – Ricardo
- 1. MVP android uygulamasında sunucular arasında iletişim kurabilir
- 2. WinPr'lerdeki MVP
- 3. MVP örnekler
- 4. RxJava ve MVP
- 5. MVP-Passive View ve MVP-Supervising denetleyicisi nedir
- 6. MVP ve sunum tanecikliği
- 7. MVP - Kaç tane sunum yapıyor
- 8. MVP, Winforms - EventHandlers veya Delegeler
- 9. MVP ile yükleme alt görünümleri
- 10. ASP.NET MVP - Kullanıcı Kontrollerini Kullanma
- 11. ASP.NET MVC Kısmi Görünümler MVP
- 12. MVP mimarisini üçüncü taraf SDK'larla nasıl izlerim?
- 13. MVP tasarım deseni en iyi uygulama
- 14. MVC ve MVP denetleme denetleyicisi aynı mıdır?
- 15. Bir MVP deseninde UiHandler nasıl kullanılır?
- 16. Android'de MVP kalıbını kullanırken android servis çağrıları ve GoogleAPIClient çağrıları nereye yazılmalıdır?
- 17. Asp.net MVC 4 Razor'da nasıl bağlanır MVP 4 Razor
- 18. Uluslararasılaştırma: Etiketler için kaynakları mı yoksa MVP mi kullanmalıyım?
- 19. MVP (Model View Presenter) veya MVC (Model Görüntüleme Denetleyicisi)
- 20. JSF neden MVP olarak kabul edilir, MVVM çerçevesi değil
- 21. Android'de MVP desenini kullanarak Interactor'dan bir hizmeti nasıl başlatırım?
- 22. Winforms-MVP ve WPF-MVVM'deki istisnaların son kullanıcıya bildirilmesi
- 23. JavaFX için iyi bir MVVM/MVP/MVC çerçevesi var mı?
- 24. Farklı pozisyonlarda iki model çizin opengl 2 android
- 25. Neden Ruby, Python veya PHP'de görülen MVP ve MVVM kalıpları değil?
- 26. Bağımlılık enjeksiyonu için Windsor kalesini kullanan MVP düzenindeki döngüsel başvuru sorunu
- 27. Android MediaPlayer'ı Android 2.2.
- 28. Doğru Veriler, Android-Android
- 29. Denetleyici sınıfınızı Android yaşam döngüsüne ayırmak için en iyi yer hangisidir?
- 30. Android:
"Yeni oluşturulan görünümü eklemenin bir yolu olmalısın" nasıl yapmalı? Cevabınız için thx çok fazla –
@MethnaniBilel çözmek için karmaşık bir sorun ... çözmek için nasıl mosta ve/veya nucles bir göz atın. – LordRaydenMK