Force Close dengan MVP Android

Design patern MVP pertama kali saya terapkan saat mengikuti kelas beasiswa dari dicoding, ketika itu saya meniru apa yang diajarkan dan tidak ada yang kurang sama sekali. Walaupun saya tiru 100% contoh coding dari tutorial, ternyata masalah ini masih muncul.

Masalah

Dengan design pattern MVP (Model - View - Presenter) pada android ternyata setiap pergantian activity atau fragment ke activity lain yang dilakukan dengan sangat cepat (kurang dari satu detik) dapat menyebabkan force close karena view yang diminta null. Misalnya dengan klik2 tombol navigasi dengan cepat.

Tentu saja ini bukan masalah pada design patternnya, namun pada cara implementasi yang saya gunakan (dan tutorial tersebut gunakan).

Solusi

View yang null bukanlah view tujuan, namun view activity asal yang masih akan dipanggil oleh presenter ketika programnya masih berjalan. Jadi presenter masih jalan saat aktifitynya sudah berganti namun masih memanggil aktifity lama dalam prosesnya. Terjadilah force close karena dianggap viewnya masih aktifity lama. Solusinya adalah dengan menggunakan null safety pada constructor view di presenter.

Contoh class presenter

Contoh interface View

Contoh fragment yang mengimplementasi ContohView

Dengan menerapkan cara ini, masalah force close pada saat pergantian tampilan yang cepat di aplikasi Android dengan MVP Design Pattern akan teratasi.