I have a Network Client class that is receiving a large binary block and parsing it into a usable Java object. The Network Client is on a separate thread from the app's View. What is the best way to make this object available to the View? I've come up with the following solutions, but I feel like none of them are the correct one:
- Create the object in the Network Client and let the View access it directly
- I would send a small message in a Handler telling the View that the data has been updated
- Con: requires that I synchronize the object between the threads to ensure that the Network Client doesn't replace the object while the View is accessing it
- Serialize (Parcel?) the object in the Network Client and send it through a Handler to the View
- Pro: there are no questions of ownership of the data
- Con: would probably be a huge performance drain on the app
- Create a reference to the object and pass that to the View
- I come from a C++ background, and I'm not sure if this is even possible in Java. I C++, I could just send the View a pointer to the object and let it take care of it. That seems like something Java wouldn't let me do. Is this feasible?
Are any of these solutions advisable, or should I approach the problem in a completely different way?