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 :
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();
}
} |
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();
}
}
} |
- 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.
- 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