Feature 3.5 Jose David Florez Ruiz - ISIS3510-MOBILE-T34/T34-Wiki-SpendiQ GitHub Wiki

Application Features Overview


Local Storage

SQLite

  • Purpose: Stores offers and transactions in a structured database format.
  • Benefit: Ensures reliable and persistent data storage for essential app functionality.

SharedPreferences

  • Purpose: Saves user preferences like the isMoneyVisible setting in the MainActivity.
  • Benefit: Provides lightweight storage for simple key-value pairs, ensuring user preferences persist across sessions.

Internal Storage

  • Purpose: Stores sensitive account data securely in internal storage.
  • Benefit: Ensures that critical user data remains private and inaccessible to external apps.

Preferences DataStore

  • Context: Used in AddTransactionModal and for the IncludeLocation button.
  • Purpose: Modern replacement for SharedPreferences, offering asynchronous and type-safe data storage.
  • Benefit: Efficiently handles structured user preferences with improved performance.

Multi-Threading

Coroutines (Dispatcher=)

  • Context: Used in NotificationsService.
  • Purpose: Executes background tasks efficiently on the appropriate dispatcher thread.
  • Benefit: Ensures smooth app performance by preventing the main thread from being blocked.

Worker Threads

  • LocationNotificationWorker: Handles location-based notifications in the background.
  • LocationBasedOfferService: Fetches and processes location-based offers.
  • Benefit: Runs intensive tasks in the background, ensuring the app remains responsive and optimized for user interactions.

Caching

LruCache

  • Context: Used in AddTransactionModal.
  • Purpose: Temporarily stores frequently accessed data to reduce repeated computations or database queries.
  • Benefit: Improves performance by keeping critical data in memory.

Static Strings

  • Context: Used in the SearchBar.
  • Purpose: Holds static data like recent searches or predefined queries.
  • Benefit: Simplifies and speeds up access to reusable string data.

Picasso

  • Purpose: Handles caching and loading of offer images.
  • Benefit: Reduces image loading times and network usage by caching downloaded images locally.