A couple of weeks ago I participated to the ICSE 2019 conference in Montreal and, as always, it has been a super-fun experience and a chance to meet a lot of friends!

There, I presented NAPPA, a new navigation-aware technique for personalized prefetching of network requests of Android apps. The intuition behind NAPPA is that we want to prefetch the network requests of the app according to the screens that the user will most likely visit in the future. NAPPA is fully automated (with the possibility of custom behaviour provided by developers), transparent w.r.t. the back-end of the app (i.e., it is independent from the data types provided by the back-end and it does not require any modifications in the business logic of the back-end), and adapts its prefetching behaviour according to the navigation patterns of the user. NAPPA on GitHub is available as an open-source project.

NAPPA GitHub repository

To the best of our knowledge, NAPPA is the first approach for prefetching network requests of Android apps that:

  1. Works at a high level of abstraction (i.e., the navigation of the user within the app)
  2. Adapts to each individual user navigation patterns
  3. Does not inherit the limitations of current static analysis techniques

The full paper is available here and below you can find the slides of the talk.