Storing Data on Android
Travis Himes
Introductions
- Who am I?
- What's this about?
- How can I get the most out of this?
- What are we going to do?
Topics:
- Shared Preferences
- Local Files
- Content Providers
- Google Drive
- Parse
- Firebase
- Couchbase Mobile
Shared Preferences
-
Key-Value
-
Android-supplied
-
Simple
-
Quick
-
Probably widely understood
Get:
SharedPreferences sPrefs = context .getSharedPreferences( ACTIVITY_PREFRENCES, Context.MODE_PRIVATE);
Write:
sPrefs .edit() .putString("CANDY_TYPE", "Butterfinger!") .apply();
Read:
sPrefs .getString( SHARED_PREFS_KEY, "default value")
pros:
- Simple API
- Available with Android
- Same interface (post 11)
cons:
- Simple objects only
- Lost with "Clear Data"
Summary:
Local Files
-
Requires Manifest Permission
-
Internal or External
-
Holds more than simple types
-
Device Local
-
Java Devs have likely worked with Files before
-
Risks...
Considerations
-
Internal vs External directory
-
Temporary vs "Permanent"
-
Dealing with File Streams
-
Space concerns
-
Creating
-
Deletion
-
Internal/"Permanent"
File file = new File(context.getFilesDir(), filename);
-or-
FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
Temporary
File file = new File(context.getCacheDir(), filename); -or- File file = File.createTempFile(fileName, null, context.getCacheDir());
Example
String filename = "myfile"; String string = "Hello world!"; FileOutputStream outputStream; try { outputStream = openFileOutput(filename, Context.MODE_PRIVATE); outputStream.write(string.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); }
Concerns
- Buffering
- Space on Disk
- File presence
- All those exceptions
Content Providers
Content Providers, as their name implies, are not great for storing data, they're useful for providing data (in the manner/presentation that you choose) to other applications and processes.
Therefore, based on the topic of tonight's talk, I won't go into more detail on them than to make some broad comments...
Off-Device Storage
Google Drive
(Illegitimate)
-
Possible, right now, via forms to store data
-
It's a hack!
-
-
Not the best move, buuuuut
-
Great for a quick and hackish solution
-
Good for write, didn't have to read, so - have fun...
-
Let me explain you my quick hack!
Steps to duplicate
(don't duplicate)
- Create a google form
- Attach it to a google sheet
- Look at the form's source to get the form id and the column names
- Write an http POST request to the form with the fields
-
Should show up in the spreadsheet
-
Test this, and never, ever, ship it
-
Seriously, this is a hack, don't ship it
Google Drive
(Legitimate)
-
OAuth setup to allow access
-
Takes Drive space for users
-
File storage (like we talked about earlier)
-
Allows for read and write
-
Google describes the interaction, seriously, it's all files
-
Should be accessible from any device with that account
Parse
So...
-
Parse Server is open-source
-
But, it's a REST API that you're talking with at that point, and that's another whole talk topic...
Firebase
-
Google-backed security
-
File-based
-
Guess what! (hint, I'm getting repetitive)
-
File-based off-device storage - go wild
Couchbase Mobile
-
NoSQL database
-
Key/Value store
-
Synchronizes with the cloud
-
I'm no expert!
-
Requires backend work/agreement
-
Didn't dive too deeply
Questions
Comments
?
Thanks!
@travis_himes
Storing Data
By Travis Himes
Storing Data
- 1,087