Zalecane: API 30.
Dzisiaj poznamy ostatni główny podstawowy element aplikacji Android:
ActivityServicesBroadCast receiver- Content providers
Możliwości https://developer.android.com/training/data-storage :
- App-specific files
- Media
- Documents and other files
- App preferences
- Database with room persistence library
Content providers zarządzają dostępem do centralnego repozytorium danych.
Pierwszym krokiem jest zastanowienie się czy rzeczywiście potrzebujesz ContentProvider:
- You want to offer complex data or files to other applications.
- You want to allow users to copy complex data from your app into other apps.
- You want to provide custom search suggestions using the search framework.
- You want to expose your application data to widgets.
- You want to implement the AbstractThreadedSyncAdapter, CursorAdapter, or CursorLoader classes.
Relationship between content provider and other components.
Źródło: developer.android.com/topic/architecture/ui-layer/stateholders
Relationship between content provider and other components.
Źródło: developer.android.com/topic/architecture/ui-layer/stateholders
-
Utwórz ContentProviderApp, jako pustą aktywność.
-
Dodaj nową klasę kotlin, rozszerzającą
ContentProvider
o nazwieSampleContentProvider
. Po zaimportowaniu ContentProvider, wybierz wygenerowania wszystkich funkcji do implementacji:class SampleContentProvider : ContentProvider(){ override fun onCreate(): Boolean { TODO("Not yet implemented") } override fun query( uri: Uri, projection: Array<out String>?, selection: String?, selectionArgs: Array<out String>?, sortOrder: String? ): Cursor? { TODO("Not yet implemented") } override fun getType(uri: Uri): String? { TODO("Not yet implemented") } override fun insert(uri: Uri, values: ContentValues?): Uri? { TODO("Not yet implemented") } override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int { TODO("Not yet implemented") } override fun update( uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array<out String>? ): Int { TODO("Not yet implemented") } }
-
Omów powyższy kod z prowadzącym zajęcia.