1

We have an Android application with over 10 000 monthly users. We recently started receiving feedbacks from users complaining about a concerning data usage (2 to 20GB consumed within a month).

Here is a screenshot coming from one of our users (total, foreground and background data consumption).

october to november data consumption

I developed a small app that uses NetworkStatsManager to get more insights about how the data was consumed and found out that most of the data consumption were tied to the NetworkStats.Bucket.txBytes.

data consumption details

Our application don't upload much (we do have some services that POST / PUT / PATCH data to our servers, but nothing that would justify such a high data consumption) so I changed this "sampling" application to measure data consumption from Chrome first downloading a 512MB file then uploading it back : as expected, I noticed that it was updating the right rx and tx bucket information.

data consumption verification

Aside of querying our backend, our application don't do much and we don't do have any network intensive process (no image / video upload, no heavy local database synchronization, etc...). We first looked for an endless loop trying to do some HTTP calls but after looking at both our local logs plus backend metrics, it seemed like a dead end.

We're using two third-party libraries that could lead to data consumption :

  • Firebase Cloud Messaging : we're basically receiving a few pushes a day (~10-20 pushes, leading to an asynchronous GET request retrieving data from our servers),
  • Countly : an on-premise analytics service that allow us to track user events, crashes, performances, etc...

We tried running our app through a proxy looking for the culprit, but it didn't lead anywhere (only HTTP calls we noticed were legitimate and data consumption seemed normal).

It feels like this issue happens once in a while, and the only time we got in touch with on of our impacted users, we could only notice that he had the issue, but he wasn't anymore.

Have you ever faced this issue or do you have any idea that could lead us to get better insight on how the data is used within our application (we have the ability to provide remote-controlled feature flags to our app, but we don't really know what to start with) ?

0 Answers0