MVP RxJava2 - mengelola kesalahan Jaringan

Saya mencoba mengikuti pola desain MVP menggunakan RxJava2. Saya baru dalam hal itu. Saat saya meminta data dari API, di Presenter saya memanggil Model saya seperti itu:

mModel.getDataFromAPI()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(data -> {
        // Do something with the data
    }, throwable -> {
        // A wild error appears!
        // TODO: Display a dialog
    });

Ketika ada kesalahan, saya ingin menampilkan dialog berisi pesan kepada pengguna.

Jadi yang saya pikirkan adalah membuat displayErrorDialog(String message) pada Tampilan. Tapi masalahnya adalah: Saya memanggil API sedikit di mana saja di aplikasi, jadi itu berarti SEMUA pandangan saya harus mengimplementasikan metode ini!

Dialog perlu ditampilkan oleh Tampilan:

  • untuk mengikuti pola desain MVP
  • karena saya memerlukan Konteks saat ini untuk menampilkan dialog.

Saya mencari solusi yang lebih baik untuk tidak harus menerapkan metode yang sama setiap kali saya memiliki pandangan baru.


person Eselfar    schedule 11.08.2017    source sumber


Jawaban (1)


Anda dapat memiliki BaseView yang mengimplementasikan displayErrorDialog(String message) dan kemudian semua tampilan Anda akan diperluas dari BaseView.

Jika Anda menggunakan interfaces Anda dapat melakukan hal yang sama menggunakan BaseInterface dan kemudian Anda dapat memanggil metode tampilan dasar Anda dari presenter mana pun.

Semoga membantu!

person Natan    schedule 11.08.2017
comment
Inilah yang saya pikirkan. Saya sudah mulai menerapkan solusi seperti itu. Terima kasih. Jika tidak ada yang punya solusi lebih baik, saya akan memvalidasi jawaban Anda. - person Eselfar; 13.08.2017