Salut à tous,
je refactor une app dans laquel j'essai d'alléger un peu les activities.
Mon but est de ne garder dans les activity que ce qui concerne le graphique (apparition/disparition de vue , changement de texte, animation, etc ...) et d'avoir à coté un controller qui va venir gérer toute la logique liée à la vue. J'ai ensuite tout un tas de classe métier que je considère comme les modèles.
Activity :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private MainController mController; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mController = new MainController(this); } public void showToast() { Toast.makeText(this, "message", Toast.LENGHT_SHORT).show(); } }- Que pensez vous de cet implémentation ? On est pas dans le MVC "pure tradition" mais l'idée me plait bien , c'est assez léger à mettre en place.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class MainController { private final WeakReference<MainActivity> mActivityRef; public MainController(MainActivity activity) { mActivityRef = new WeakReference<>(activity); } public void doSomething() { //Traitement if(mActivityRef != null) { final LoginActivity activity = mActivityRef.get(); activity.showToast(); } } }
- J'ai opté pour une weakreference de l'activity dans le controller , mais je ne suis pas certains que ce soit nécessaire. Avis ?
J’accroche pas aux architecture MVVM ou MVP qui rajoute trop de classe/code à mon gout.
Partager