CS378 - Mobile Computing Persistence. Saving State We have already seen saving app state into a Bundle on orientation changes or when an app is killed.

Slides:



Advertisements
Similar presentations
A Guide to Advanced Java Faculty:Nguyen Ngoc Tu. 2 Operating System Application #1 Application #2 Java Virtual Machine #1 Local Memory Shared Memory Threads.
Advertisements

Bruce Scharlau, University of Aberdeen, 2012 Data storage options for mobiles Mobile Computing.
The Package Statement Group related interfaces and classes together Purpose: encapsulation and reduces name conflicts –private package classes not visible.
Java File I/O. File I/O is important! Being able to write and read from files is necessary and is also one common practice of a programmer. Examples include.
Android og persistens
Streams Dwight Deugo Nesa Matic Portions of the notes for this lecture include excerpts from.
Slide 10.1 Advanced Programming 2004, based on LY Stefanus’s Slides Object Serialization Object serialization: the process of converting an object into.
 data/data-storage.html#pref data/data-storage.html#pref 
JAVA: An Introduction to Problem Solving & Programming, 7 th Ed. By Walter Savitch ISBN © 2015 Pearson Education, Inc., Upper Saddle River,
Tracking & Login Data persistence User tracking.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L07 (Chapter 18) Binary I/O.
Advanced Java Class Serialization. Serialization – what and why? What? –Translating the contents of an Object to a series of bytes that represent it,
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 1 Let’s get started. Let’s start by selecting an architecture from among.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L08 (Chapter 18) Binary I/O.
ASP.NET Programming with C# and SQL Server First Edition
Android Development: File System Approaches Richard S. Stansbury 2015.
Data Persistence in Android
Data Storage: Part 1 (Preferences)
Files and Streams (part 2) 1 -Based on slides from Deitel & Associates, Inc. - Revised by T. A. Yang.
CSE 486/586, Spring 2013 CSE 486/586 Distributed Systems Content Providers & Services.
CIS 270—Application Development II Chapter 14—Files and Streams.
CS378 - Mobile Computing Persistence. Saving State We have already seen saving app state into a Bundle on orientation changes or when an app is killed.
Data Storage: Part 2 (File System). Internal Storage versus External Storage Internal storage − for private data –By default, files saved to the internal.
Lecture Set 14 B new Introduction to Databases - Database Processing: The Connected Model (Using DataReaders)
CSE 486/586, Spring 2012 CSE 486/586 Distributed Systems Recitation.
Streams Reading: 2 nd Ed: , rd Ed: 11.1, 19.1, 19.4
PROG Mobile Java Application Development PROG Mobile Java Application Development Memory and Memory Issues Data Storage.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
Data Structure & File Systems Hun Myoung Park, Ph.D., Public Management and Policy Analysis Program Graduate School of International Relations International.
JAVA I/O © EnhanceEdu, IIIT Hyderabad. Contents 3/29/2010EnhanceEdu, IIIT - H 2  Command Line I/O  File Class  Streams  Byte Streams [Low level and.
Serialization. Serialization is the process of converting an object into an intermediate format that can be stored (e.g. in a file or transmitted across.
Android Storage. There are several options for storage of data with Android We can put data into a preferences file. We can put data into a ‘normal’ file.
Nilesh Singh Local Data Storage option Android provides several options for you to save persistent application data. - Shared preferences - Creation.
Data persistence How to save data using SharedPreferences, Files, and SQLite database 1Data persistence.
Object Persistence and Object serialization CSNB534 Asma Shakil.
Data Persistence Nasrullah Niazi. Share Preferences The SharedPreferences class provides a general framework that allows you to save and retrieve persistent.
Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D.
Persistence Dr. David Janzen Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.
Computer Hardware. What is Hardware? Hardware is any part of a computer you can touch There are 2 categories: Inside the computer Peripherals connected.
 Pearson Education, Inc. All rights reserved Files and Streams.
Object Serialization.  When the data was output to disk, certain information was lost, such as the type of each value.  If the value "3" is read from.
©SoftMoore ConsultingSlide 1 Serialization. ©SoftMoore ConsultingSlide 2 Serialization Allows objects to be written to a stream Can be used for persistence.
PROG Mobile Java Application Development PROG Mobile Java Application Development Data Storage, Continued.
Multimedia Capture & storage. Introduction A rich set of API for recording of audio & video. A developer has two choices  launch the built-in app using.
CS 116 OBJECT ORIENTED PROGRAMMING II LECTURE 12 GEORGE KOUTSOGIANNAKIS Copyright: 2015 Illinois Institute of Technology/ George Koutsogiannakis 1.
© 2016 Cengage Learning®. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part. Android Boot Camp.
Files and Serialization. Files Used to transfer data to and from secondary storage.
CHAPTER 9 File Storage Shared Preferences SQLite.
1 CSE 331 Memento Pattern and Serialization slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia
Android Storage MAY 2013 Hu.Cai. NAME OF PRESENTATION [CHANGE IN SLIDE MASTER] MONTH, YEAR [CHANGE IN SLIDE MASTER] Outline 1.Storage In General 2.SharedPreferences.
By: Eliav Menachi.  On Android, all application data (including files) are private to that application  Android provides a standard way for an application.
Mobile Application Development Data Storage. Android provides several options for you to save persistent application data. The solution you choose depends.
Data Storage in Android Димитър Н. Димитров. Why talk about data? Why not 3D graphics or network connectivity? Data as fundamental term in computer science.
Editing a Twitter search. Viewing search results in a browser.
Data Persistence Chapter 9. Objectives Learn about data storage methods Understand use of Shared Preferences Understand file-based storage and the differences.
Operating Systems {week 11a}
OBJECT ORIENTED PROGRAMMING II LECTURE 21 GEORGE KOUTSOGIANNAKIS
Data Storage: Part 2 (File System)
CS371m - Mobile Computing Persistence.
Android Application Data Storage 1.
Ch14 Files and Streams OBJECTIVES
Mobile Software Development for Android - I397
Memento Design Pattern
I/O Basics.
Chapter 13: File Input and Output
Android Storage.
MSIS 670: Object-Oriented Software Engineering
CSE 331 Memento Pattern slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia
OBJECT ORIENTED PROGRAMMING II LECTURE 22 GEORGE KOUTSOGIANNAKIS
Preference Activity class
Presentation transcript:

CS378 - Mobile Computing Persistence

Saving State We have already seen saving app state into a Bundle on orientation changes or when an app is killed to reclaim resources but may be recreated later 2

Storing Data Multiple options for storing data associated with apps Shared Preferences Internal Storage – device memory External Storage SQLite Database Network Connection 3

Sharing Data Private data can be shared by creating a Content Provider Android has many built in Content Providers for things such as – audio – images – video – contact information 4

SHARED PREFERENCES 5

Shared Preferences Private primitive data stored in key-value pairs SharedPreferences Class Store and retrieve key-value pairs of data – keys are Strings – values are Strings, Sets of Strings, boolean, float, int, or long Not strictly for preferences 6

SharedPreferences Several levels of preferences: getPreferences(int mode) for the Activities Preferences getSharedPreferences(String name, int mode) for a an Application's shared preferences – multiple activities PreferenceManager. getDefaultSharedPreferences() for system wide preferences 7

Using SharedPreferences Obtain a SharedPreferences object for application using these methods: – getSharedPreferences(String name, int mode) if you want multiple files – getPreferences(int mode) 8

Writing to SharedPreferences After obtaining SharedPreferences object: – call edit() method on object to get a SharedPreferences.Editor object – place data by calling put methods on the SharedPreferences.Editor object – also possible to clear all data or remove a particular key 9

Data for SharedPreferences 10

Writing to SharedPreferences When done writing data via the editor call either apply() or commit() apply() is the simpler method – used when only one process expected to write to the preferences object commit() returns a boolean if write was successful – for when multiple process may be writing to preferences 11

Reading From Shared Preferences After obtaining SharedPreferences object use various get methods to retrieve data Provide key (string) and default value if key is not present get Boolean, Float, Int, Long, String, StringSet getAll() returns Map with all of the key/value pairs in the preferences 12

Shared Preferences File Stored as XML 13

Preference Activity An Activity framework to allow user to select and set preferences for your app tutorial 6 has an example – difficulty, sound, color, victory message Main Activity can start a preference activity to allow user to set preferences 14

INTERNAL STORAGE 15

Internal Storage Private data stored on device memory More like traditional file i/o – in fact not that different from Java I/O by default files are private to your application – other apps cannot access files removed when app is uninstalled 16

Internal Storage To create and write a private file to the device internal storage: call openFileOutput(String name, int mode) – method from Context – file created if does not already exist – returns FileOutputStream object regular Java class Modes same as SharedPreferences minus MODE_MULTI_PROCESS and addition of MODE_APPEND 17

Writing to Files FileOutputStream writes raw bytes – arrays of bytes or single bytes Much easier to wrap the FileOutputStream in PrintStream object 18

Reading from Files files saved to device – data directory for app call openFileInput(String name) method to obtain a FileInputStream FileInputStream reads bytes – for convenience may connect to Scanner object or wrap in a DataInputStream object 19

Static Files If you need or have a file with a lot of data at compile time: – save file in project res/raw / directory – can open file using the openRawResource(int id) method and pass the R.raw.id of file – returns an InputStream to read from file – cannot write to the file 20

Cache Files If need to cache data for application instead of storing persistently: – call getCacheDir() method to obtain a File object that is a directory where you can create and save temporary cache files – files may be deleted by Android later if space needed but you should clean them up on your own – recommended to keep under 1 MB 21

Internal Files - Other Useful Methods All of these are inherited from Context File getFileDir() – get absolute path to filesystem directory when app files are saved File getDir(String name, int mode) – get and create if necessary a directory for files boolean deteleFile(String name) – get rid of files, especially cache files String[] fileList() – get an array of Strings with files associated with Context (application) 22

EXTERNAL FILES 23

External Storage Public data stored on shared external storage may be removable SD (Secure Digital) card or internal, non-removable storage files saved to external storage are world- readable files may be unavailable when device mounts external storage to another system files may be modified by user when they enable USB mass storage for device 24

Checking Media Availability Call Environment.getExternalStorageState() method to determine if media available – may be mounted to computer, missing, read-only or in some other state that prevents accessing 25

Checking Media State other states such as media being shared, missing, and others 26

Accessing Files on External Storage call getExternalFilesDir(String type) to obtain a directory (File object) to get directory to save files type is String constant from Environment class – DIRECTORY_ALARMS, DIRECTORY_DCIM (Digital Camera IMages), DIRECTORY_DOWNLOADS, DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES 27

External File Directory If not a media file then send null as parameter to getExternalFilesDir() method The DIRECTORY_ constants allow Android's Media Scanner to categorize files in the system External files associated with application are deleted when application uninstalled 28

External Data Shared Files If you want to save files to be shared with other apps: save the files (audio, images, video, etc.) to one of the public directories on the external storage device Environment.getExternalStoragePublicDirectory( String type) method returns a File object which is a directory same types as getExternalFilesDir method 29

Sharing Data Example: – In the random art app – add a button to save images – if we want images to show up with other "images" save to the DIRECTORY_PICTURES directory – now, other apps can view / use these images via the media scanner – NOT deleted when app deleted 30

Examining Shared Directories Not the same as the system media directories 31

Result 32

OBJECT SERIALIZATION 33

Object Serialization Who's done this? Taking a runtime data structure or object and converting it to a form that can be stored – converted to a byte stream store the object in between program runs transmit the object over a network store the data, not the methods / ops 34

Object Serialization 35 runtime Object ArrayList serialization Secondary Storage / Network deserialization runtime Object ArrayList

Serialization - Why? Could just do it by hand – write out fields and structure – read it back in Serialization provides an abstraction for the "by hand" approach Much less code to write Example, Java has a specification for serializing objects – little effort on your part 36

Serialization in Java java.io.Serializable interface Here are the methods in the Serializable interface: Really, that's it A TAG interface A way for a class to mark that is Serializable 37

Serialization in Java 38

Serialization in Java Data is serialized, not class Program that deserializes must have the class definition Use an ObjectOutputStream object to write out the objects Later, use an ObjectInputStream to read in the objects 39

ObjectOutputStream Example from CS307 / CS314 Evil Hangman test cases play the game and test student results for each guess we want the patterns and the number of words in each pattern – Map 40

ObjectOutputStream Example LATER FOR EACH GUESS data methods (writeInt, …) for primitives 41

ObjectOutputStream writeObject 42

ObjectOutputStream Data Methods … and others 43

Output File - not human readable 44

ObjectInputStream When ready to run tests Make the guesses 45

Externalizable A sub-interface of Serializable Gives more control over the format of the serialization to the class itself Two methods: 46

Externalizable ObjectOutputStream will test if object is Serializable – if not, throws an exception Then tests if Externalizable – if so calls the writeExtenal method on the object – if not, uses default specification for serialization 47

OTHER STORAGE OPTIONS 48

SQLite Database Structured data stored in a private database More on this next lecture 49

Network Connection Store data on web with your own network server Use wireless or carrier network to store and retrieve data on web based server classes from java.net and android.net 50