Date post: | 08-Jul-2015 |
Category: |
Education |
Upload: | michal-ursiny |
View: | 109 times |
Download: | 2 times |
Co mi usnadňuje život
Tipy z vývoje pro Android OS
Michal Ursiny / Fuerte Internationalwww.fuerteint.com
Někdy se cítíte
A přitom by jste chtěli
Jak na to
● redukujte složitost problému● někdo to už vyřešil před Vámi – naučte se to● poučte se z vlastních chyb / nevhodných řešení● sledujte vývoj, novinky, reflektujte
Co jsem se naučil já
● ContentProviders + Loadery● Google Play Services● Volley
Sample project: nearby
● https://bitbucket.org/ursimon/nearby● demonstruje vše ;-)
ContentProvider + Loader
● pro ukládání dat v appce● dříve dbHelper = složité, problematické při
vícevláknovém zpracováním● ContentProvider = thread safe, poskytuje
notifikace o změně● Ve spojení s Loader zjednodušuje zobrazování
dat v appce
ContentProvider + Loader
● Jak to celé implementovat...
● Hotový ContentProvider do AndroidManifest s atributem exported=“false“ = jen pro Vaši appku
● Ve své Activity / Fragment implementujte LoaderManager.LoaderCallbacks<Cursor>
● OnCreateLoader – vytváříte Loader, query
● OnLoaderFinished – dostanete Cursor – co s ním? Klasicky do adapteru
ContentProvider + Loader
● Jak ho napsat?● Koukněte se na fungující příklad nebo● Nechte si ho vygenerovat!
https://github.com/fedepaol/Android-sql-lite-helper
O víc se nestaráte
ContentProvider + Loader
● Podrobnější info:● Power your app with Content Provider
Mathieu Calba DroidCon London / 2013 :https://speakerdeck.com/mathieu_calba/power-your-app-with-content-provider
● aDevMeetup #7: Michal Havryluk - Jak efektivně pracovat s databází(suspendedNotifications)http://www.youtube.com/watch?v=sX0n6kNvrDg
Google Play Services
● Google mapy do appky● Zjednodušuje získání lokace (FusionProvider)● GeoFencing a více● Součástí SDK
Google Play Services
● Jak získat lokaci?● Importujete Google Play Services library project● Implementujete
GooglePlayServices.ConnectionCallbacks● Získate LocationClient
Google Play Services
● LocationClient.getLastLocation() vrací nejlepší a nejnovější pozici – může stačit, ale může být taky NULL :-(
● LocationClient.requestLocationUpdates(LocationRequest, LocationListener)požádáte o location request a dostanete lokaci v LocationListeneru
O víc se nestaráte
Volley
● Android knihovna pro networking● Přímo od Google (používá Google Play Store)● Je rychlá, cachuje requesty, paralelní
zpracování requestů● Ve spojení s Gson vám může vracet přímo
objekty – nic neparsujete● NetworkImageView – view komponenta pro
nahrávání obrázků ze sítě
Volley
● Google I/O 2013 - Volley: Easy, Fast Networking for Android:http://www.youtube.com/watch?v=yhv8l9F44qo
● Repository:https://android.googlesource.com/platform/frameworks/volleystačí vybuildovat jako library project a výsledný jar do vašeho projektu
● Docs:http://files.evancharlton.com/volley-docs/
Volley - Request
● subclass Application = inicializace queue, imageloader● RequestQueue queue = MyVolley.getRequestQueue();● Vytvoříte request:GsonRequest<PlacesResponse> categoryRequest = new GsonRequest<PlacesResponse>(Method.GET, callURL, PlacesResponse.class, createMyReqSuccessListener(), createMyReqErrorListener());
● queue.add(categoryRequest);
Volley - Requestprivate Response.Listener<PlacesResponse> createMyReqSuccessListener() {
return new Response.Listener<PlacesResponse>() {
@Override
public void onResponse(PlacesResponse response) {
// you have your object HERE!
}}
● Alternativně: StringRequest = dostáváte String, JsonObjectRequest = dostáváte Json
● Lze rozšířit: SimpleXMLRequesthttps://gist.github.com/itsalif/6149365
● GsonRequestHeaders – s rozšířením s podporou headers + bodyhttps://gist.github.com/ursimon/7743040
Volley - NetworkImageView
● Komponenta přímo do Layoutu <com.android.volley.toolbox.NetworkImageView/>
● A pak už jen: image.setImageUrl(myUrl, MyVolley.getImageLoader());
O víc se nestaráte