Yes, so regarding the performance improvements, so we need to be very careful about it, otherwise if you are not concerning about it, it may end up with various errors or crashes or ANR issues like the app won't be responding. So the things which we need to keep in mind when we are developing the code, it's mainly like so in which thread it has to work. So if it is a background operations, so it should be working in IO thread, it should not work in a main thread so that it won't be blocking the main thread which ends up in ANR issue. So we make sure like all the IO related operations like making an API call and getting the response everything happens or reading the data from the database, everything happens in IO thread. So once we get the response to update the UI, we'll be using in the main thread, we'll be working on the main thread. Similarly, like so we need to make sure like whether any of the services is not tightly coupled to an activity so that so if it is coupled to an activity and object is not object reference to refer to an activity, it is not getting cleared. So during garbage collection, so it may end up in the memory leak. So it will end up in a crashes. So we need to make sure the objects are getting deallocated. So once it done with their use case, so that whenever the garbage collection happens, so it will be clearing all the unwanted objects so that the application will be in a correct state to work on. And so in case of any performance issue, we can use profiling from Android Studio, which is a tool which will help help us to see which is making an issue in our application like whether any object is taking more space or whether the object is getting referred has an reference for a longer time, and it's not getting cleared out. So we can find all those things from the profiling tool in Android Studio.
