  Android apps are event-driven, and their execution is often interrupted by
external events. This interruption can cause data loss issues that annoy users.
For instance, when the screen is rotated, the current app page will be
destroyed and recreated. If the app state is improperly preserved, user data
will be lost. In this work, we present an approach and tool iFixDataloss that
automatically detects and fixes data loss issues in Android apps. To achieve
this, we identify scenarios in which data loss issues may occur, develop
strategies to reveal data loss issues, and design patch templates to fix them.
Our experiments on 66 Android apps show iFixDataloss detected 374 data loss
issues (284 of them were previously unknown) and successfully generated patches
for 188 of the 374 issues. Out of 20 submitted patches, 16 have been accepted
by developers. In comparison with state-of-the-art techniques, iFixDataloss
performed significantly better in terms of the number of detected data loss
issues and the quality of generated patches.
