Something which could have easily been overlooked, but I just spotted it, something appears wrong with the string comparison system. Here's what I have:
When a specific item in the frame (one per frame) is collected, the global string "Collected" is set to Collected+":itm"+Str$(frame)+":"
So for example, "Collected" may appear as ":itm1::itm2::itm3:" if the first three have been collected.
Then, it destroys the object when revisiting the frame if Find(Collected, "itm"+Str$(frame)+":", 0) <> -1.
This works on PC and iOS, if the item for that particular frame has been collected, it will not be present when you revisit that frame. However, on Android, the item is always destroyed. Therefore I think that the Java function which corresponds to the Find String in String expression must return a different value to -1 if the string isn't found. Perhaps it returns 0 and that hasn't been changed to -1 for the MMF side?