Issues with Mobile App Windows? Think Architecture!
When working with modal windows in mobile applications, users can face certain difficulties. For example, a technician of a logistics company has to work onsite (e.g., at a warehouse). S/he is filling out the order form on the mobile device. At some point, the technician receives the messages with the updated instructions or a new customer request, but cannot open the message window, until s/he finishes filling out the order form. As a result, the technician fills out the form and sends it for billing as is, though the information there may not be precise.
Books to be read separately
This kind of situation is common for a single-threaded application. When developing a mobile client for a logistics-focused application, we kept the clumsy modal windows in mind. If all the modules of our mobile client—messaging, logging, orders, inventory, etc.—operated in a single thread, the user would face the usability problem described earlier.
That is why we decided to design a multi-threaded core architecture codenamed
Book Manager. Every module works within the separate thread, which we call a
Bookshelf contains different pieces of functionality, or
Books. The engine extracts the needed functionality from a certain module and chooses what to display to the user in the window.
In other words, every
Book (messages, inventory, orders, etc.) stands separately, on its own
Bookshelf (thread). Not only the
Book Manager chooses which
Book to read from the
Bookshelf, but it also selects which page to open in the modal window. As a result, the user can see the requested window, switch between several windows without closing them, and therefore perform a number of tasks simultaneously.
More efforts, but better app maintenance
One may hesitate whether to create an application that uses more than one thread or not. The reason is that multi-threaded programs are sometimes considered to be complex and difficult to debug. Furthermore, there are few developers who can create well-thought-out business logic for a multi-threaded enterprise application.
On the other hand, proper architecture is the answer to issues of this kind. If a third-party developer wants to create new modules for our app (which is very likely to happen considering the tempo the industry evolves), s/he can build them as single-threaded programs. This makes it easy to add new functionality without extra testing, debugging, or writing complex code. Definitely, a win-win case.
This solution also helped us to solve a performance issue, which we are going to share in the next blog post.
- How to Exchange Data with a Mobile Client Offline?
- Logistics App Data: Full Automation vs. Manual Input/Adjustment
- How to Omit Inaccuracy in Receiving Position and Distance Data from GPS?