android sync adapter

23
DEVELOPING ANDROID CLIENT APPS VIA SYNCADAPTER Anatoliy Kaverin Lohika @ 2013

Upload: alex-tumanoff

Post on 29-Nov-2014

6.320 views

Category:

Technology


4 download

DESCRIPTION

Android sync adapter by Anatoliy Kaverin

TRANSCRIPT

Page 1: Android sync adapter

DEVELOPING ANDROID CLIENT

APPS VIA SYNCADAPTER

Anatoliy Kaverin

Lohika @ 2013

Page 2: Android sync adapter

SESSION AGENDA

Why?

SyncAdapter!? LOLWUT?

The big picture

Puzzles

Does anybody use it?

Code samples, documentation

Q&A

2

Page 3: Android sync adapter

IMAGINE…

SIMPLE CLIENT-SERVER APP 3

Page 4: Android sync adapter

SYNC CACHE: ISSUES TO CONSIDER

Are we done?

Global Sync setting

Bandwidth starvation

YES, queued

YES, even duplicates

YES, even if app is off

YES, built in support

Hand-made SyncAdapter framework

Network availability

Pending queue

Refresh on network

Periodic update

YES, manual override

YES! YES! YES! 4

Page 5: Android sync adapter

SYNCADAPTER!? LOLWUT?

Well, you probably use it everyday…

5

Page 6: Android sync adapter

THE BIG PICTURE – BASIC FLOW

6

Page 7: Android sync adapter

THE BIG PICTURE – PUZZLES

7

Page 8: Android sync adapter

PREREQUISITES TO CONSIDER

Network layer separation

Plain implementation

Sync status field for synced entities

Usually NOOP, Created, Updated & Deleted

Consider the field in UI flows

Consider partial sync

For better performance to sync only local delta

8

Page 9: Android sync adapter

PUZZLES – ACCOUNT (1)

Key Features

Manage credentials;

Safe system store;

Multitenant support

Sync related

Token caching and invalidation

Alternative flow to login or sign in

Store extra data with account

9

Page 10: Android sync adapter

PUZZLES – ACCOUNT (2)

Checklist:

Implement Authenticator

Implement Authentication Service

Define configuration in XML

10

Page 11: Android sync adapter

PUZZLES – ACCOUNT (3)

Checklist:

Register Authentication Service in AndroidManifest

Add permissions

APIs to use:

android.accounts.AccountManager to work with accounts

android.accounts.Account to store credentials

11

Page 12: Android sync adapter

PUZZLES – CONTENT PROVIDER (1)

Key features

Heart of DAO

Resource effective

Cursor, resource-effective scalability

Power of Joins

Built-in ListView refresh via ContentObserver &

Cursor

Sync related

Acts as mediator for sync and UI layers

Supports automatic delta upload sync

NOTE: Can be fake one, but you’ll lose a lot of magic

12

Page 13: Android sync adapter

PUZZLES – CONTENT PROVIDER (2)

Minimal implementation based on

https://github.com/novoda/SQLiteProvider

Supports all CRUD

Supports DB versioning

And even more…

13

Page 14: Android sync adapter

PUZZLES – SYNCADAPTER (1)

Key features

Plugin to Android SyncManager

SyncManager manages queue of execution

Adapter is executed in background thread & when

network is available

Sync related

Scheduling & automated mode

Respects system settings

Can be overridden by manual request

Partial sync supported

Upload only local delta

Any other criteria (Bundle)

14

Page 15: Android sync adapter

PUZZLES – SYNCADAPTER (2)

Checklist

Implement SyncAdapter class

Implement Sync Service

Define configuration xml

15

Page 16: Android sync adapter

PUZZLES – SYNCADAPTER (3)

Checklist

Register Sync Service in AndroidManifest

Add permissions

APIs to use

android.content.ContentResolver to reach SyncManager

programmatically

16

Page 17: Android sync adapter

PUZZLES – SYNCADAPTER (4)

How to trigger sync?

Upload delta

ContentResolver.notifyChange

Be aware of cyclic calls if used in ContentProvider

Scheduling

ContentResolver.addPeriodicSync

Automated

ContentResolver.setSyncAutomatically

Manual

ContentResolver.requestSync

Manual forced

ContentResolver.requestSync

Pass SYNC_EXTRAS_MANUAL in bundle

17

Page 18: Android sync adapter

THE BIG PICTURE – OPTIONAL PUZZLES

18

Page 19: Android sync adapter

PROS & CONS

Pros

Simplify server interaction

A lot of work handled by framework

Resource effective – the Android way

Cons

A lot of puzzles, hard to start…

Lack of documentation

Error handling

Bugs

19

Page 20: Android sync adapter

DO

ES A

NY

BO

DY

US

E IT

?

20

Page 21: Android sync adapter

DOCUMENTATION

Official docs

Great tutorial added in August ’13

http://developer.android.com/training/sync-

adapters/index.html + code sample

Stackoverflow, use tags below

[android-syncadapter]

[sync] + [android]

21

Page 22: Android sync adapter

BONUS: CODE SAMPLES

Repo on GitHub https://github.com/springbyexample/spring-by-example Toy client-server app (both parties supplied )

Shows all puzzles implemented:

Accounts – fake one, there is no authentication

Content Provider based on novoda library

SyncAdapter logics

All wrapping XML configuration

Built via Maven

Follow README and be happy

Got questions?

[email protected]

22

Page 23: Android sync adapter

Q & A Thanks for your attention! 23