- HTTP Request Response Header - User token, application ID and parameters required to retrieve specific APIs were previously appended to a URL. To prevent user information from being compromised, we have then shifted important parameters like token and app ID to a HTTP connection header instead.
- Gzip - To reduce long period of dependency on a stable connnection, it is critical to ensure that the file size of the required API is kept to the minimum. Comparing the data size between a Gzip file and a text String, Gzip file is calculated to be approximately 10 times smaller. This is critical for us where users are always on the move and stable connection is hard to get. At the same time, the data we require from QIITO is known to be relatively huge (A travelogue can contain 100s of places).
- Lazy Loading - The idea of lazing loading is to reduce the required time needed to load and display a page. This is especially crucial when our application is required to retrieve and display a large number of images. What we have done is to make the downloading of images asyncronous and to create a queueing system (5 threads at a time) to download the images. Once an image is downloaded, it will be cached in the phone's memory and will be displayed on the page.
- SherlockActionBar/ Fragments
- SherlockActionBar library allows us to create "ICS looking" apps, that look the same all the way back to Android version 1.6, which the Android sdk does not offer. The features of the library include Actionbar, tabs, overflow, split action bar, viewpager etc. Now, we are able to create multiple interfaces within a single activity across all Android OS versions. This allows a better manipulation of functions when users navigate through the application. For example, the navigation between a web view and a native view with differing interface will only require two different fragments, instead of creating a new activity. In addition, due to the flexibility of fragments, each of them can be recycled and used in other activities within the application, reducing the need for repeated codes. The complexity lies on the fact that resources pertaining to SherlockActionBar library could be limited at times and as a new Android developer, the learning curve is steep.
- Whilst overseas, users may have difficulty obtaining data connectivity to have access to the full functionalities of Google Maps. With the implementation of OSMDroid (Open Street Map Droid), the application will cache a specific map area pertaining to the user’s itinerary. This allows users to view the touring area on the offline map, complete with zooming features and search function of that particular area. Being an open-sourced package increases the difficulty of implementation, due to lack of proper documentation to explore customized functions. There are also certain restriction of its usage due to it being free, thus algorithms for download are required to be stricter.