I have implemented MVP pattern in my application.
I have an additional layer which I call Repository, which is responsible for running HTTP asynchronous requests. I have created OnTaskCompleteListener interface for communication between Repository and Model (Model implements OnTaskCompleteListener). So when Repository finishes the request, it calls a method in Model and updates data. Then, Model calls a method in Presenter with the same mechanism, to let it know that Model has been updated.
What I am worrying, is the chain of callbacks that comes from Repository up to Presenter.
Is there a better way to communicate between components of MVP or is it the way to go?
I did try "EventBus", but a large number of needed interfaces scared me off.
Observer did not seem fit as there is only one listener for each component (Model listens to Repository, Presenter listens to Model).
Thank you.
Android: MVP. Right way to communicaticate between components
1k views Asked by Sermilion At
1
There are 1 answers
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in DESIGN-PATTERNS
- Will it slow down the performance when Unit of work pattern is used with EF Core
- Design patterns - How Design patterns work with bulk data
- Using Repository pattern to fetch data from different places and build list of objects
- Suggest best design patterns to update or insert bulk data
- Mapping one collection of objects into another collection of objects
- How can I break down a large presenter in the Viper design pattern into smaller pieces?
- How to create under the label in Textformfield, not a border, in Flutter
- Own Pattern / framework for interfacing with components in C
- Common Method Implementation for Elasticsearch and OpenSearch Java SDK
- How can I decouple them?
- Understanding Potential Deadlock in Resource Pool Implementation Described in "Go in Action"
- Dependency Injection Patterns stand alone implementaion
- How to use GoF design pattern for software robustness?
- Pipeline data processing and code architecture
- Mocking inherited class where new object is created or how to unsmell my class
Related Questions in CALLBACK
- TelephonyCallback.CallStateListener with LiveData and ViewModel
- M-Pesa Daraja API STK Push Callback Not Triggering in Node.js Application
- Qt: running callback in the main thread from the worker thread
- Why am I getting MethodErrors when using continuous callback in Julia ODE solver?
- In Rails 7, what is the right ActiveRecord callback to use if I need to prevent (or rollback) persistance on error?
- How to get variable from GWT Callback
- How to execute code "before_serialize"? or How can I sanitize attributes before they are serialized?
- Is there a way to add a pre-hook in R?
- Understanding use of closure in callback in javascript
- How can I make firebase realtime dtabase to act as a webhook endpoint
- How do you sort a list view in Visual C++?
- Second useState doesn't update in promise chain
- How to wait for one api call to complete before making another api call without using `await` in vue pinia store
- Kotlin labmda invoke alternatve
- Sveltekit on change function not being called when added to a component
Related Questions in MVP
- OCX and the MVP Pattern in Window Forms (Winform)
- MVP createing of child view
- relationship between View and Presenter in MVP
- Model-View-Presenter vs Model-View-ViewModel for embedded application in C++
- Encapsulating member variables of a raw C# class that was marked as serializable
- Tkinter - Managing background tasks in MVP GUI
- Unity MVP architecture
- How to architect a WinForms app for hardware control using the MVP pattern?
- Organizing Multi frame app using Tkinter and MVP architecture
- Guice and MVP pattern: decouple the view from the presenter
- Swift-MVP: Function is not called in the presenter delegate. What am I doing wrong?
- How to apply the Model-View-Presenter pattern in a WinForms app centered around a TabControl?
- The responsibilities of each component of the Model view presenter controller pattern (not to be confused with the MVC or MVP patterns)
- Please explain how object instantiation works here whilst it's not being used - seemingly
- UIElement Reference
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
After extensive reading, I came to a conclusion, that I do not need another class 'Repository' to delegate loading of data. The model actually should be responsible for loading and holding data. Using a callback method parameter for the method of the presenter, that calls a method that loads data in the model is a great way to communicate between model and presenter.
Presenter.java
This way model, presenter and view are linked in this single method in very clear and intuitive manner. Hope this will help someone.