You are using a random number generator to produce your IV when you encrypt your data : unless that exact IV is used when you decrypt it, what you will get is nonsense.
So every time your app is closed, the current IV is discarded and when it is restarted, you get a new random IV value - that means your encrypted data is no longer recoverable (except in some encryption systems, where all but the first block is recoverable:
encryption - Can CBC ciphertext be decrypted if the key is known, but the IV not? - Cryptography Stack Exchange[
^]
Store your IV as part of the encrypted data!