and-lec04

scacchicgardenΛογισμικό & κατασκευή λογ/κού

13 Δεκ 2013 (πριν από 3 χρόνια και 5 μήνες)

74 εμφανίσεις

lec 04

Content Providers

Adapters

CursorLoaders

Advanced Debugging









Preferences
: key/value pairs (we will talk about these next
lecture)


SQLite
: Use a very small RDBMS that is sandboxed to your app
and then expose it to other apps using a content provider


Files
: You can read/write files to your raw directory
--

avoid this.


Network
: store data on the internet and read/write using any
available Internet protocol


avoid this.




You can persist data in several ways :

All first
-
class components in Android must be
declared in the manifest file, they include:


Activities

Services

ContentProviders

Receivers (aka BroadcastReceivers)

http://developer.android.com/reference/android/provider/package
-
summary.html


These are the built
-
in Content Providers. You will notice things like:

Contacts, Calendar, MediaStore, Albums, etc.



Existing Content Providers:

Each of the .db's are sandboxed in their own application. These dbs can
NOT be accessed outside their application context. To get or expose the
data in the db, you must use a Content Provider

CRUD:

Create

Read

Update

Delete

ContentValues

Android uses ContentValues as a shuttle to pass values into the
ContentResolver.



Then, the ContentResolver to pass values into the
ContentProvider, which in turn communicates to the db


ContentValues


ContentResolver


ContentProvider

db

content://edu.uchicago.cs.gerber.restos/restos/34

Anatomy of a URI for content provider

A

B

C

D

A: the scheme


always content

B: the authority

C: optional path

D: individual id

ADB (Android
Dubug

Bridge)


adb kill
-
server


adb start
-
server




adb get
-
state


adb devices



Use kill
-
server / start
-
server to reboot the adb if your device/emulator is not
communicating with your dev
-
machine.



Using Log.i Log.e Log.d Log.w Log.v and Log.wtf and use of filters

Advanced Debugging

Exploring the File Explorer /data/data

Push files to your phone

Emulator Control: voice/sms messages

Profiler using a slow() method.


Advanced Debugging

HeirarchyViewer

Must be on the emulator and running

In [c:
\
java
\
]android
-
sdk
\
tools
\
hierarchyviewer

http://www.youtube.com/watch?v=PAgE7saQUUY

(good video)

Measure/Layout/Draw



Advanced Debugging

2 benefits of CursorLoaders:


The query is handled on a background thread for you (courtesy of being build
on AsyncTaskLoader) so large data queries do not block the UI. This is
something the docs recommended you do for yourself when using a plain
Cursor, but now it's done under the hood.


CursorLoader is auto
-
updating. In addition to performing the initial query, the
CursorLoader registers a ContentObserver with the dataset you requested
and calls forceLoad() on itself when the data set changes. This results in you
getting async callbacks anytime the data changes in order to update the
view.

http://stackoverflow.com/questions/7182920/what
-
are
-
the
-
benefits
-
of
-
cursorloaders

CursorLoaders

http://stackoverflow.com/questions/7182920/what
-
are
-
the
-
benefits
-
of
-
cursorloaders

CursorLoaders

Calling initLoader() will result in the onCreateLoader() method where you
will construct the query and a new CursorLoader instance, if necessary.


The onLoadFinished() method will be fired each time new data is
available, and will include the latest Cursor for you to attach to the view
or otherwise iterate through.


You will notice that the reference to the cursor in the Adapter is null, this
is because the CursorLoader is now managing the cursor.

Adapters

An adapter needs to know the following in its constructor

//the context in which it will operate (required)

//the source data (required)

//the list item layout (required)

//the target fields
--

if more than one.

//cursor


if this is a cursorAdapter


//you must then set the adapter to the Target View

AdapterViews

The bottom line are all appropriate Target Views

M

*LA

PA

CP

A

Midterm min requirements:


ListActivity that is the
main/launcher


New/View/Edit list item detail
Activity


PreferencesActitivity for prefs


ActionBar on ListActivity


You may exceed the minimum
requirements.






Midterm Assignment


you may use the base code or you may
make your own.


A: AsyncTask: How to get/parse JSON data (weather data) from RESTful
web service (with recipe)


B: MediaStore: Taking pictures and videos and storing them for use in an app
(not the standard gallery) (with recipe)


C: Voice Recognition: How to use voice recognition inside an app (with
recipe)


D: Tracking locations (using GPS) for a jog or a race. Data capture so that I
can map where I went and how far I traveled, avg speed (with recipe)






Student
presentations
:

M

*LA

PA

CP

A

Midterm min requirements:


ListActivity that is the
main/launcher


New/View/Edit list item detail
Activity


PreferencesActitivity for prefs


ActionBar on ListActivity


You may exceed the minimum
requirements.






Midterm Assignment


you may use the base code or you may
make your own.