Yeah, Tyger’s post came through during that time period where others had posted with similar experiences on the thread I linked, which is why I assumed it was related. I’m hoping it’s the same issue and as such is now resolved.
However, for completeness, AlliCrab’s item download algorithm:
First, a check is done to see if any reviews or lessons have been done since the last download:
- download study queue
- using the locally cached data, project what the study queue should look like given the last downloaded study queue and all the previously downloaded items’ available_date
- If the downloaded study queue matches the projected study queue, no further downloads are done
Otherwise, the app requests:
- level progression
- SRS distribution
- radical
- kanji
- vocabulary
The first two happen in parallel, then the last three happen in parallel. A given level’s SRS item data is only downloaded if:
- There are no items of a particular level in the local cache (<= user’s current level)
- There are any items in a particular level whose date_available <= current time
- It is the user’s current level
The list of levels to be downloaded is determined independently for each of the item types. Once the list of levels to be downloaded has been determined, this is then batched using the following maximum batch sizes: radicals 30, kanji 20, vocabulary 5. (I’m increasing these batch sizes in the next version after the API performance improvements, so that radicals and kanji requests are unbatched and vocabulary is batched with a max size of 15.)
This download process is only automatically done at most once every 15 minutes, scheduled to happen at a random time between 5 and 30 seconds after the quarter hour. However, the user can refresh manually at any time, though it will still do the projected study queue check to determine whether anything actually gets downloaded.
Worst case scenario, a level 60 user who has just downloaded the app will perform 20 API requests in relatively rapid succession (study queue, level progression, SRS distribution, 2 radical batches, 3 kanji batches, and 12 vocabulary batches). But further fetches in general I would expect to be substantially smaller.