Содержание
- 2. Kotlin Instant app Room
- 3. Kotlin
- 4. “Now official” Подробнее: https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/
- 5. Статически типизированный язык “Null safety” 100% совместим с Java Прост в изучении Встроенная поддержка начиная с
- 6. Java Button b = view.findViewById(R.id.btn1); b.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { //your action }
- 7. data class Book(var title: String, var price: Int) equals() и hashCode() toString() в виде “Book(title=Kotlin in
- 8. fun Activity.byId(@IdRes id: Int): T = findViewById(id) // вызов val btn = byId (R.id.btn); Extension функции
- 9. val books = listOf( Book("Kotlin in Action", 1000), Book("Programming Kotlin", 1500) ) books.sortBy { it.price }.forEach{
- 10. Ctrl+Shift+Alt+K Поддержка в Android Studio Подробнее: https://developer.android.com/kotlin/get-started.html
- 11. public class Book { private String title; private Integer price; public Book(String title, Integer price) {
- 12. class Book(var title: String?, var price: Int?) { private fun getPriceWithDiscount(discountSize: Int?): Int { return price!!
- 13. возможность декомпилировать код и посмотреть его в байт коде или на Java Menu > Tools >
- 14. Небольшое число книг, особенно на русском (всего 6) Увеличение размера apk: к debug apk прибавляется ~
- 15. Room
- 16. Основные компоненты Room: Database Entity DAO Room
- 17. Добавьте следующие Gradle зависимости: compile 'android.arch.persistence.room:runtime:1.0.0' // при работе с RxJava compile 'android.arch.persistence.room:rxjava2:1.0.0' //при использовании Kotlin
- 18. @Entity(tableName = "book") data class Book( @PrimaryKey(autoGenerate = true) var id: Long, var title: String, @ColumnInfo(name
- 19. Также поддерживаются следующие аннотации: @Ignore - поле, с такой аннотацией не сохраняется в БД @Embeded -
- 20. @Dao interface BookDao{ @Query("SELECT * FROM book") fun getAll(): List @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertBook(book: Book)
- 21. Простой запрос с параметрами: @Dao interface BookDao{ @Query("SELECT * FROM book WHERE page_count == :pageCount") fun
- 22. java.lang.IllegalStateException Cannot access database on the main thread since it may potentially lock the UI for
- 23. Есть встроенная поддержка RxJava и Android LiveData @Query("SELECT * FROM book WHERE id = :id") Asynchronous
- 24. @Database(entities = arrayOf(Book::class), version = 1) abstract class App1Database: RoomDatabase(){ abstract fun bookDao(): BookDao } val
- 25. Предположим, вам нужно добавить новое поле в модель класса Book: @Entity(tableName = "book") data class Book(
- 26. Повысить версию БД @Database(entities = arrayOf(Book::class), version = 2) abstract class AppDatabase: RoomDatabase(){ //… Добавить в
- 27. 3) Определить класс миграции, расширяющий класс Migrate class Migration1To2 : Migration(1,2) { override fun migrate(database: SupportSQLiteDatabase)
- 28. Меньше "boilerplate" кода* Проверка запросов к базе данных во время компиляции Простые миграции Запрет на работу
- 29. Instant app
- 30. Сейчас: Новый способ поиска приложений Поиск Установка Использование
- 31. Instant app - возможность скачать только нужную Вам функцию, а не всё приложение целиком. Что такое
- 32. Android 5.0 (API level 21) + Поддержка
- 33. Android Studio 3 и новее Самые новые версии Google Support Library Instant Apps Development SDK Требования
- 34. Ограниченный набор доступных разрешений Все запросы из приложения должны идти по https Приложения проверяются значительно жестче
- 35. Каждый apk: - это одна activity это одно законченное действие не более 4Mb “Приложение как фича”
- 36. Использование Base feature module apply plugin: 'com.android.feature' android { ... baseFeature true ... } Instant app
- 37. Kotlin Instant app Room
- 39. Скачать презентацию