Android Offline

Get Started. It's Free
or sign up with your email address
Android Offline by Mind Map: Android Offline

1. Storage

1.1. Per account folder

1.1.1. HTTP Cache

1.1.2. File uploads

1.1.3. File downloads

1.2. User account info

1.3. Encrypt all stored data

2. Background Syncing

2.1. Reevaluation Queue Storage

2.1.1. High-level Design: Adding persistence capabilities to existing reevaluation manager

2.1.2. Forms Handling

2.1.2.1. Original Form

2.1.2.2. Latest Form

2.1.2.3. Turn datatypes cache off, when offline, to have self-contained UI representation

2.1.2.3.1. Store datatypes with form vs store them globally?

2.1.3. Reeval Request

2.1.3.1. Choose data representation to store in DB

2.1.4. Life Cycle Events

2.1.4.1. Support for "submit" event

2.1.4.2. Support for "cancel" event

2.1.4.3. Support for "back" event

2.2. Required Fields Support

2.2.1. Look at "required" attribute and simulate existing behavior

2.2.2. Only do it while offline

2.3. File Upload

2.3.1. Store path vs. file contents

2.3.2. Choose data representation to store in DB

2.4. Submission & Conflict Resolution

2.4.1. Outbox

2.4.1.1. List Items stored in the Forms table

2.4.1.1.1. Submitted (Queued for syncing)

2.4.1.1.2. Saved (Queued for syncing?)

2.4.1.1.3. Failed

2.4.2. Programatically setting values to Form Elements (ValueSetters). No look up, No traversal.

2.4.3. Form Editing

2.4.3.1. Grid: support for finding component inside grid

2.4.3.2. Populate form based on reevaluation queue containing all user interactions performed while offline. Lookup + traversal.

2.4.3.3. Drop last queued "submit" action

2.4.3.4. Drop all queued requests made after last "cancel" action

2.4.4. Heuristically map fields to new form

2.4.5. Toggling Old and New Forms

2.4.6. File Upload Temporary Folder Cleanup (Server Configuration)

3. Caching layer

3.1. Place at the edge of the networking layer code

3.1.1. i.e. just before a request is sent to the server

3.1.2. i.e. just after a response from the server is received

3.2. Cache Regions

3.2.1. Create a caching layer with "partitions", known as "regions"

3.2.2. Each region has its own eviction strategy

3.3. Update existing caches to use the new caching layer

3.3.1. Atom Feed

3.3.2. Avatars

3.3.3. JSON Form Data

3.3.4. Records

3.3.5. Reports

3.3.6. ...

4. Background Polling

4.1. Turn datatype cache off

5. Offline Awareness

5.1. Use low-level offline API (Network state callback/listener)

5.1.1. All business logic related to what offline means MUST be placed here

5.2. Suppress error alerts when offline

5.2.1. Handle in a single place inside BaseAppianActivity

5.2.2. Swallow all networking errors if app is offline

5.3. Offline Banner