Your SlideShare is downloading. ×
Android осень 2013 лекция 6
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Android осень 2013 лекция 6

254
views

Published on

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
254
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SQlite       Встраиваемая Реляционная Open source База данных – один файл Быстрая Блокирующаяся    Покрыта тестами Используется в Qt, Skype, Навигаторыб iOS и проч. http://www.sqlite.org/lang.ht ml 2
  • 2. Database in Android  android.database.sqlite  Schema и Contract  SQLiteDatabase  SQLiteOpenHelper  _ID 3
  • 3. Database Contract 4
  • 4. Use Contract 5
  • 5. SQLiteOpenHelper 6
  • 6. Insert 7
  • 7. Query 8
  • 8. Update 9
  • 9. Cursors  Virtual Table  Набор строк  Структура с данными  moveToFirst()  Названия столбцов  Тип столбцов  close() 10
  • 10. Loaders  Появились в 3.0(есть в support library)  Основная задача: асинхронная загрузка данных в активити или фрагмент  Следят за источником данных  Основные классы:      LoaderManager LoaderCallbacks Loader CursorLoader AsyncTaskLoader 11
  • 11. LoaderCallbacks public class SampleActivity extends Activity implements LoaderManager.LoaderCallbacks<D> { public Loader<D> onCreateLoader(int id, Bundle args) { ... } public void onLoadFinished(Loader<D> loader, D data) { ... } public void onLoaderReset(Loader<D> loader) { ... } /* ... */ } 12
  • 12. Simple Loader Example public class SampleListActivity extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor> { private static final String[] PROJECTION = new String[] { "_id", "text_column" }; private static final int LOADER_ID = 1; private LoaderManager.LoaderCallbacks<Cursor> mCallbacks; private SimpleCursorAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] dataColumns = { "text_column" }; int[] viewIDs = { R.id.text_view }; mAdapter = new SimpleCursorAdapter(this, R.layout.list_item, null, dataColumns, viewIDs, 0); setListAdapter(mAdapter); mCallbacks = this; LoaderManager lm = getLoaderManager(); lm.initLoader(LOADER_ID, null, mCallbacks); } 13
  • 13. Simple Loader Example @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { return new CursorLoader(SampleListActivity.this, CONTENT_URI, PROJECTION, null, null, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { switch (loader.getId()) { case LOADER_ID: mAdapter.swapCursor(cursor); break; } } @Override public void onLoaderReset(Loader<Cursor> loader) { mAdapter.swapCursor(null); } 14
  • 14. Implementing Loaders     Инкапсулируют загрузку данных Не нужно задумываться о потоках Event-driven Четыре характеристики:  AsyncTask  Listener для «доставки» данных  Одно из трех состояний:  Started  Stopped  Reset  Следит за изменением контента и перезапрашивает его 15
  • 15. ContentProvider 16
  • 16. ContentProvider Инкапсуляция данных Механизм доступа к данным Интерфейс – CRUD URI Batch Operations Permissions Представление данных в виде таблицы ContentResolver.query Нужно ли создавать провайдер, если вы не собираетесь шарить данные?  Системные провайдеры          17
  • 17. URI  Идентификация данных  Идентификация провайдера: authority  Путь до таблицы: path  content://user_dictionary/words  Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.C ONTENT_URI,4); 18