As we have seen, it is easy to add form fields to a View and produce visually appealing and functionally adequate applications. However, it can take a lot more work to provide the end user with an interface that truly ticks all of the boxes. For example, how many times have you clicked on a button in an application and had the whole application freeze while it does some work?
In this chapter, we'll look into solving this problem by using asynchronous programming, along with a number of other ways of improving the user experience for the end user. For example, we'll investigate enabling the users to customize their versions of the application using their own user preference settings.
We'll discuss keeping ...