Abstract
Mobile apps have become indispensable for daily life, not only for individuals but also for companies/organizations that offer their services digitally. Inherited by the mobility of devices, there are no limitations regarding the locations or conditions in which apps are being used. For example, apps can be used where no internet connection is available. Therefore, offline-first is a highly desired quality of mobile apps. Accordingly, inappropriate handling of connectivity issues and miss-implementation of good practices lead to bugs and crashes occurrences that reduce the confidence of users on the apps’ quality. In this paper, we present the first study on Eventual Connectivity (ECn) issues exhibited by Android apps, by manually inspecting 971 scenarios related to 50 open-source apps. We found 304 instances of ECn issues (6 issues per app, on average) that we organized in a taxonomy of 10 categories. We found that the majority of ECn issues are related to the use of messages not providing correct information to the user about the connectivity status and to the improper use of external libraries/apps to which the check of the connectivity status is delegated. Based on our findings, we distill a list of lessons learned for both practitioners and researchers, indicating directions for future work.
Similar content being viewed by others
References
Google (2021) Offline first. https://developer.chrome.com/apps/offline_apps
Archibald J (2021) Offline cookbook. https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook
Machado G (2015) Mobile apps offline support https://www.infoq.com/articles/mobile-apps-offline-support
Google (2021) Network and battery best practices. http://goo.gl/vbiiV7
Falaki H, Lymberopoulos D, Mahajan R, Kandula S, Estrin D (2010) A first look at traffic on smartphones. In: Proceedings of the 10th ACM SIGCOMM conference on internet measurement, ser. IMC ’10. https://doi.org/10.1145/1879141.1879176. Association for Computing Machinery, New York, pp 281–287
Rao A, Legout A, Lim Y. -s., Towsley D, Barakat C, Dabbous W (2011) Network characteristics of video streaming traffic. In: Proceedings of the seventh conference on emerging networking experiments and technologies, ser. CoNEXT ’11. https://doi.org/10.1145/2079296.2079321. Association for Computing Machinery, New York
Kuzuno H, Tonami S (2013) Signature generation for sensitive information leakage in android applications. In: 2013 IEEE 29th international conference on data engineering workshops (ICDEW), pp 112–119
Song Y, Hengartner U (2015) Privacyguard: A vpn-based platform to detect information leakage on android devices. In: Proceedings of the 5th annual ACM CCS workshop on security and privacy in smartphones and mobile devices, ser. SPSM ’15. https://doi.org/10.1145/2808117.2808120. Association for Computing Machinery, New York, pp 15–26
Shabtai A, Kanonov U, Elovici Y, Glezer C, Weiss Y (2011) “andromaly”: a behavioral malware detection framework for android devices. J Intell Inform Syst 38(1):161–190. https://doi.org/10.1007/s10844-010-0148-x
Khalid H, Shihab E, Nagappan M, Hassan AE (2015) What do mobile app users complain about? IEEE Softw 32(3):70–77
Guo C, Zhang J, Yan J, Zhang Z, Zhang Y (2013) Characterizing and detecting resource leaks in android applications. In: Proceedings of the 28th IEEE/ACM international conference on automated software engineering, ser. ASE’13. https://doi.org/10.1109/ASE.2013.6693097. IEEE Press, Piscataway, pp 389–398
Liu Y, Xu C, Cheung S-C (2014) Characterizing and detecting performance bugs for smartphone applications. In: Proceedings of the 36th international conference on software engineering, ser. ICSE. https://doi.org/10.1145/2568225.2568229, vol 2014. ACM, New York, pp 1013–1024
Linares-Vásquez M, Vendome C, Luo Q, Poshyvanyk D (2015) How developers detect and fix performance bottlenecks in android apps. In: 2015 IEEE international conference on software maintenance and evolution (ICSME), pp 352–361
Lin Y, Radoi C, Dig D (2014) Retrofitting concurrency for android applications through refactoring. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering, ser. FSE. https://doi.org/10.1145/2635868.2635903, vol 2014. ACM, New York, pp 341–352
Mazuera-Rozo A, Trubiani C, Linares-Vásquez M, Bavota G (2019) Investigating types and survivability of performance bugs in mobile apps. Empir Softw Eng
Agrawal A, Sodhi B, TV P (2013) A multi-dimensional measure for intrusion: The intrusiveness quality attribute. In: Proceedings of the 9th international ACM Sigsoft conference on quality of software architectures, ser. QoSA ’13. https://doi.org/10.1145/2465478.2465497. ACM, New York, pp 63–68
Allix K, Bissyandé TF, Klein J, Traon YL (2016) Androzoo: Collecting millions of android apps for the research community. In: 2016 IEEE/ACM 13th working conference on mining software repositories (MSR), pp 468–471
Zhou Y, Jiang X (2012) Dissecting android malware: Characterization and evolution. In: 2012 IEEE symposium on security and privacy, pp 95–109
Joorabchi ME, Ali M, Mesbah A (2015) Detecting inconsistencies in multi-platform mobile apps. In: 2015 IEEE 26th international symposium on software reliability engineering (ISSRE), pp 450–460
Ali M, Joorabchi ME, Mesbah A (2017) Same app, different app stores: A comparative study. In: Proceedings of the 4th international conference on mobile software engineering and systems, ser. MOBILESoft ’17. https://doi.org/10.1109/MOBILESoft.2017.3. IEEE Press, Piscataway, pp 79–90
Fazzini M, Orso A (2017) Automated cross-platform inconsistency detection for mobile apps
Mercado IT, Munaiah N, Meneely A (2016) The impact of cross-platform development approaches for mobile applications from the user’s perspective. In: Proceedings of the international workshop on app market analytics, ser. WAMA. https://doi.org/10.1145/2993259.2993268. ACM, New York, pp 43–49
Pathak A, Hu Y, Zhang M (2011) Bootstrapping energy debugging on smartphones: A first look at energy bugs in mobile devices. In: Proceedings of the 10th ACM workshop on hot topics in networks, ser. HotNets-X. 10.1145/2070562.2070567. ACM, New York, pp 5:1–5:6
Pathak A, Jindal A, Hu Y, Midkiff SP (2012) What is keeping my phone awake?: Characterizing and detecting no-sleep energy bugs in smartphone apps. In: Proceedings of the 10th international conference on mobile systems, applications, and services, ser. MobiSys ’12. https://doi.org/10.1145/2307636.2307661. ACM, New York, pp 267–280
Zhang J, Musa A, Le W (2013) A comparison of energy bugs for smartphone platforms, MOBS, May
Liu Y, Xu C, Cheung SC (2013) Where has my battery gone? finding sensor related energy black holes in smartphone applications. In: 2013 IEEE international conference on pervasive computing and communications (PerCom), pp 2–10
Linares-Vásquez M, Bavota G, Bernal-Cárdenas C, Oliveto R, D Penta M, Poshyvanyk D (2014) Mining energy-greedy api usage patterns in android apps: An empirical study. In: Proceedings of the 11th working conference on mining software repositories, ser. MSR. https://doi.org/10.1145/2597073.2597085, vol 2014. ACM, New York, pp 2–11
Moran K, Linares-Vasquez M, Bernal-Cardenas C, Vendome C, Poshyvanyk D (2017) Crashscope: A practical tool for automated testing of android applications. In: 2017 IEEE/ACM 39th international conference on software engineering companion, ICSE-C, pp 15–18
Moran K, Linares-Vásquez M, Bernal-Cárdenas C, Vendome C, Poshyvanyk D (2016) Automatically discovering, reporting and reproducing android application crashes. In: 2016 IEEE international conference on software testing, verification and validation (ICST), pp 33–44
Adamsen CQ, Mezzetti G, Møller A (2015) Systematic execution of android test suites in adverse conditions. In: Proceedings of the 2015 international symposium on software testing and analysis, ser. ISSTA. https://doi.org/10.1145/2771783.2771786, vol 2015. ACM, New York, pp 83–93
Liang C-JM, Lane ND, Brouwers N, Zhang L, Karlsson BF, Liu H, Liu Y, Tang J, Shan X, Chandra R, Zhao F (2014) Caiipa: Automated large-scale mobile app testing through contextual fuzzing. In: Proceedings of the 20th annual international conference on mobile computing and networking, ser. MobiCom ’14. https://doi.org/10.1145/2639108.2639131. Association for Computing Machinery, New York, pp 519–530
Geiger F-X, Malavolta I, Pascarella L, Palomba F, Di Nucci D, Bacchelli A (2018) A graph-based dataset of commit history of real-world android apps. In: Proceedings of the 15th international conference on mining software repositories, ser. MSR ’18
Coppola R, Ardito L, Torchiano M (2019) Characterizing the transition to kotlin of android apps: A study on f-droid, play store, and github. In: Proceedings of the 3rd ACM SIGSOFT international workshop on app market analytics, ser. WAMA 2019
Escobar-Velásquez C, Mazuera-Rozo A, Bedoya C, Osorio-Riaño M, Linares-Vásquez M, Bavota G (2021) Online appendix. https://thesoftwaredesignlab.github.io/android-eventual-connectivity
Chen N, Lin J, Hoi SCH, Xiao X, Zhang B (2014) Ar-miner: Mining informative reviews for developers from mobile app marketplace. In: Proceedings of the 36th international conference on software engineering, ser. ICSE. https://doi.org/10.1145/2568225.2568263, vol 2014. ACM, New York, pp 767–778
Villarroel L, Bavota G, Russo B, Oliveto R, D Penta M (2016) Release planning of mobile apps based on user reviews. In: Proceedings of the 38th international conference on software engineering, ser. ICSE ’16. https://doi.org/10.1145/2884781.2884818. ACM, New York, pp 14–24
Palomba F, Linares-Vásquez M, Bavota G, Oliveto R, Penta MD, Poshyvanyk D, Lucia AD (2015) User reviews matter! tracking crowdsourced reviews to support evolution of successful apps. In: 2015 IEEE international conference on software maintenance and evolution (ICSME), pp 291–300
Palomba F, Linares-Vásquez M, Bavota G, Oliveto R, D Penta M, Poshyvanyk D, Lucia AD (2018) Crowdsourcing user reviews to support the evolution of mobile apps. J Syst Softw 137:143–162. http://www.sciencedirect.com/science/article/pii/S0164121217302807
Wikipedia (2017) List of free and open-source Android applications. https://en.wikipedia.org/wiki/List_of_free_and_open-source_Android_applications
(2017) Open-source-android-apps. https://github.com/pcqpcq/open-source-android-apps
Krippendorff K (2018) Content analysis: An introduction to its methodology. Sage Publications, Thousand Oaks
Frank M, Dong B, Porter Felt A, Song D (2012) Mining permission request patterns from android and facebook applications. In: 2012 IEEE 12th international conference on data mining, pp 870–875
Mostafa S, Rodriguez R, Wang X (2017) Netdroid: Summarizing network behavior of android apps for network code maintenance. In: 2017 IEEE/ACM 25th international conference on program comprehension (ICPC), pp 165–175
Baghel SK, Keshav K, Manepalli VR (2012) An investigation into traffic analysis for diverse data applications on smartphones. In: 2012 National conference on communications (NCC), pp 1–5
Ham H-S, Choi M-J (2012) Applicaion-level traffic analysis of smartphone users using embedded agents. In: 2012 14th Asia-pacific network operations and management symposium (APNOMS), pp 1–4
Wei X, Gomez L, Neamtiu I, Faloutsos M (2012) Profiledroid: Multi-layer profiling of android applications. In: Proceedings of the 18th annual international conference on mobile computing and networking, ser Mobicom ’12. https://doi.org/10.1145/2348543.2348563. Association for Computing Machinery, New York, pp 137–148
Fukuda K, Asai H, Nagami K (2015) Tracking the evolution and diversity in network usage of smartphones. In: Proceedings of the 2015 internet measurement conference, ser. IMC ’15. https://doi.org/10.1145/2815675.2815697. Association for Computing Machinery, New York, pp 253–266
Nayam W, Laolee A, Charoenwatana L, Sripanidkulchai K (2016) An analysis of mobile application network behavior. In: Proceedings of the 12th asian internet engineering conference, ser. AINTEC ’16. https://doi.org/10.1145/3012695.3012697. Association for Computing Machinery, New York, pp 9–16
Conti M, Li QQ, Maragno A, Spolaor R (2018) The dark side(-channel) of mobile devices: A survey on network traffic analysis. IEEE Commun Surv Tutor 20(4):2658–2713
Rapoport M, Suter P, Wittern E, Lhotak O, Dolby J (2017) Who you gonna call? analyzing web requests in android applications. In: 2017 IEEE/ACM 14th international conference on mining software repositories (MSR), pp 80–90
Ren J, Rao A, Lindorfer M, Legout A, Choffnes D (2016) Recon: Revealing and controlling pii leaks in mobile network traffic. In: Proceedings of the 14th annual international conference on mobile systems, applications, and services, ser. MobiSys ’16. https://doi.org/10.1145/2906388.2906392. Association for Computing Machinery, New York, pp 361–374
Cheng Z, Chen X, Zhang Y, Li S, Sang Y (2017) Detecting information theft based on mobile network flows for android users. In: 2017 International conference on networking, architecture, and storage (NAS), pp 1–10
Continella A, Fratantonio Y, Lindorfer M, Puccetti A, Zand A, Kruegel C, Vigna G (2017) Obfuscation-resilient privacy leak detection for mobile apps through differential analysis. In: Proceedings of the ISOC network and distributed system security symposium (NDSS), San Diego, CA
Huang X, Zhou A, Jia P, Liu L, Liu L (2019) Fuzzing the android applications with http/https network data. IEEE Access 7:59951–59962
Gadient P, Ghafari M, Tarnutzer M, Nierstrasz O (2020) Web apis in android through the lens of security. In: 2020 IEEE 27th international conference on software analysis, evolution and reengineering (SANER), pp 13–22
Crussell J, Stevens R, Chen H (2014) Madfraud: Investigating ad fraud in android applications. In: Proceedings of the 12th annual international conference on mobile systems, applications, and services, ser. MobiSys ’14. https://doi.org/10.1145/2594368.2594391. Association for Computing Machinery, New York, pp 123–134
Wei T, Mao C, Jeng AB, Lee H, Wang H, Wu D (2012) Android malware detection via a latent network behavior analysis. In: 2012 IEEE 11th International conference on trust,security and privacy in computing and communications, pp 1251–1258
Sadeghi A, Bagheri H, Garcia J, Malek S (2017) A taxonomy and qualitative comparison of program analysis techniques for security assessment of android software. IEEE Trans Softw Eng 43(6):492–530
Li L, Bissyandé TF, Papadakis M, Rasthofer S, Bartel A, Octeau D, Klein J, Traon L (2017) Static analysis of android apps: A systematic literature review. http://www.sciencedirect.com/science/article/pii/S0950584917302987, vol 88, pp 67–95
Munaiah N, Klimkowsky C, McRae S, Blaine A, Malachowsky SA, Perez C, Krutz DE (2016) Darwin: A static analysis dataset of malicious and benign android apps. In: Proceedings of the international workshop on app market analytics, ser. WAMA. https://doi.org/10.1145/2993259.2993264, vol 2016. ACM, New York, pp 26–29
Thomas DR, Beresford AR, Rice A (2015) Security metrics for the android ecosystem. In: Proceedings of the 5th Annual ACM CCS workshop on security and privacy in smartphones and mobile Devices, ser. SPSM ’15. https://doi.org/10.1145/2808117.2808118. ACM, New York, pp 87–98
Thomas DR (2015) The lifetime of android API vulnerabilities: case study on the JavaScript-to-java interface (transcript of discussion). Springer International Publishing, Cham, pp 139–144. https://doi.org/10.1007/978-3-319-26096-9_14
Cve-2012-6636 (2020) https://www.cvedetails.com/cve/cve-2012-6636
Linares-Vásquez M, Bavota G, Escobar-Velásquez C (2017) An empirical study on android-related vulnerabilities. In: 2017 IEEE/ACM 14th international conference on mining software repositories (MSR), pp 2–13
MITRE (2020) Cve details. https://www.cvedetails.com/
MITRE (2020) Common weakness enumeration. http://cwe.mitre.org/
Mazuera-Rozo A, Bautista-Mora J, Linares-Vásquez M, Rueda S, Bavota G (2019) The android os stack and its vulnerabilities: an empirical study. Empir Softw Eng 24(4):2056–2101. https://doi.org/10.1007/s10664-019-09689-7
Mazuera-Rozo A, Trubiani C, Linares-Vásquez M, Bavota G (2020) Investigating types and survivability of performance bugs in mobile apps. Empir Softw Eng. https://doi.org/10.1007/s10664-019-09795-6
Nielsen J, Molich R (1990) Heuristic evaluation of user interfaces. In: Proceedings of the SIGCHI conference on human factors in computing systems, ser. CHI ’90. https://doi.org/10.1145/97243.97281. Association for Computing Machinery, New York, pp 249–256
Weichbroth P (2020) Usability of mobile applications: A systematic literature study. IEEE Access 8:55563–55577
Parente Da Costa R, Canedo ED, De Sousa RT, De Oliveira Albuquerque R, García Villalba LJ (2019) Set of usability heuristics for quality assessment of mobile applications on smartphones. IEEE Access 7:116145–116161
Ghazizadeh FZ, Vafadar S (2017) A quantitative evaluation of usability in mobile applications: An empirical study. In: 2017 international symposium on computer science and software engineering conference (CSSE), pp 1–6
Bessghaier N, Souii M (2017) Towards usability evaluation of hybrid mobile user interfaces. In: 2017 IEEE/ACS 14th international conference on computer systems and applications (AICCSA), pp 895–900
Lelli V, Blouin A, Baudry B (2015) Classifying and qualifying gui defects. In: 2015 IEEE 8th international conference on software testing, verification and validation (ICST), pp 1–10
Escobar-Velásquez C, Osorio-Riaño M, Dominguez-Osorio J, Arevalo M, Linares-Vásquez M (2020) An empirical study of i18n collateral changes and bugs in guis of android apps. In: 2020 IEEE international conference on software maintenance and evolution (ICSME), pp 581–592
Cruz L, Abreu R (2019) Catalog of energy patterns for mobile applications. Empir Softw Eng :1–27
Pathak A, Hu Y, Zhang M (2012) Where is the energy spent inside my app? fine grained energy accounting on smartphones with eprof. In: European conference on computer systems (EuroSys), pp 29–42
Pathak A, Hu Y, Zhang M, Bahl P, Wang YM (2011) Fine-grained power modeling for smartphones using system call tracing. In: European conference on computer systems (EuroSys), pp 153–168
Linares-Vásquez M., Bavota G, Bernal-Cárdenas C., Oliveto R, Penta MD, Poshyvanyk D (2014) Mining energy-greedy API usage patterns in android apps: an empirical study. In: Working conference on mining software repositories (MSR), pp 2–11
Hao S, Li D, Halfond WGJ, Govindan R (2012) Estimating Android applications’ CPU energy usage via Bytecode profiling. In: International workshop on green and sustainable software (GREENS), pp 1–7
Li D, Hao S, Halfond WGJ, Govindan R (2013) Calculating source line level energy information for android applications. In: International symposium on software testing and analysis (ISSTA), pp 78–89
Hao S, Li D, Halfond WGJ, Govindan R (2013) Estimating mobile application energy consumption using program analysis. In: ICSE’13, pp 92–101
Li D, Jin Y, Sahin C, Clause J, Halfond W (2014) Integrated energy-directed test suite optimization. In: International symposium on software testing and analysis (ISSTA), pp 339–350
Li D, Hao S, Gui J, Halfond W (2014) An empirical study of the energy consumption of Android applications. In: International conference on software maintenance and evolution (ICSME), pp 121–130
Wan M, Jin Y, Li D, Halfond WGJ (2015) Detecting display energy hotspots in Android apps. In: International conference on software testing, verification and validation (ICST)
Sahin C, Wan M, Tornquist P, McKenna R, Pearson Z, Halfond WGJ, Clause J (2016) How does code obfuscation impact energy usage? J Softw Evol Process :565–588
Li D, Lyu Y, Gui J, Halfond WG (2016) Automated energy optimization of http requests for mobile applications. In: International conference on software engineering (ICSE), pp 249–260
Babakol T, Canino A, Mahmoud K, Saxena R, Liu YD (2020) Calm energy accounting for multithreaded java applications. In: Proceedings of the 28th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering, ser. ESEC/FSE. https://doi.org/10.1145/3368089.3409703, vol 2020. Association for Computing Machinery, New York, pp 976–988
Carroll A, Heiser G (2010) An analysis of power consumption in a smartphone. In: USENIX annual technical conference
Azim MT, Neamtiu I, Marvel LM (2014) Towards self-healing smartphone software via automated patching. In: Proceedings of the 29th ACM/IEEE international conference on automated software engineering, ser. ASE ’14. https://doi.org/10.1145/2642937.2642955. Association for Computing Machinery, New York, pp 623–628
Xiong W, Chen S, Zhang Y, Xia M, Qi Z (2018) Reproducible interference-aware mobile testing. In: 2018 IEEE international conference on software maintenance and evolution (ICSME), pp 36–47
Monkey (2021) https://developer.android.com/studio/test/monkey, [Online; accessed 6-June-2019]
Zhao W, Ding Z, Xia M, Qi Z (2019) Systematically testing and diagnosing responsiveness for android apps. In: 2019 IEEE international conference on software maintenance and evolution (ICSME), pp 449–453
Panizo L, Díaz A, García B (2019) Model-based testing of apps in real network scenarios. Int J Softw Tools Technol Transfer 22(2):105–114. https://doi.org/10.1007/s10009-019-00518-2
Yang S, Yan D, Rountev A (2013) Testing for poor responsiveness in android applications. In: 2013 1st international workshop on the engineering of mobile-enabled systems (MOBS), pp 1–6
Google (2021) Connectivity manager. https://developer.android.com/reference/android/net/ConnectivityManager
Android (2021) Manage network usage. https://developer.android.com/training/basics/network-ops/managing
Android (2021) Monitor network connectivity while the app is running. https://bit.ly/3np3gDU
Android (2021) Kotlin io. https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/-i-o.html
Android (2021) Improve app performance with kotlin coroutines. https://developer.android.com/kotlin/coroutines-adv
Android (2021) Running android tasks in background threads. https://developer.android.com/guide/background/threading
Android (2021) Running android tasks in background threads - using handlers. https://bit.ly/3pTknPC
Android (2021) Asynctask class. https://developer.android.com/reference/android/os/AsyncTask
Android (2021) Volley. https://developer.android.com/training/volley
Square (2021) Retrofit. https://square.github.io/retrofit/
Archibald J (2021) The offline cookbook. https://web.dev/offline-cookbook
Android (2021) Lrucache. https://developer.android.com/reference/android/util/LruCache
Square (2021) Picasso. https://square.github.io/picasso/
Ruth B (2021) Glide. https://bumptech.github.io/glide/
Firebase (2021) Firebase - access data offline. https://firebase.google.com/docs/firestore/manage-data/enable-offline
Realm (2021) Realm for android. https://realm.io/blog/realm-for-android/
Android (2021) Schedule tasks with workmanager. https://developer.android.com/topic/libraries/architecture/workmanager
Android (2021) Set up requestqueue. https://developer.android.com/training/volley/requestqueue
Android (2021) Guide to app architecture - cache data. https://bit.ly/3nqTwc4
Acknowledgements
Escobar-Velásquez and Linares-Vásquez were partially funded by a Google Latin America Research Award 2018-2021. Escobar-Velásquez was supported by a ESKAS scholarship, No. 2020.0820. Mazuera-Rozo and Bavota gratefully acknowledge the financial support of the Swiss National Science Foundation for the CCQR project (SNF Project No. 175513).
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Meiyappan Nagappan
Publisher’s note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Escobar-Velásquez, C., Mazuera-Rozo, A., Bedoya, C. et al. Studying eventual connectivity issues in Android apps. Empir Software Eng 27, 22 (2022). https://doi.org/10.1007/s10664-021-10020-6
Accepted:
Published:
DOI: https://doi.org/10.1007/s10664-021-10020-6