KHÓA HỌC LẬP TRÌNH ANDROID KOTLIN Xin chào các bạn, chúng mình là Rx-Mobile-Team (https://rx-mobile-team.github.io/profile/), hiện là các lập trình viên Mobile (Android/iOS/Flutter) giàu kinh nghiệm về mảng Mobile Development (trên 4+ năm kinh nghiệm). Với đam mê lập trình Mobile, luôn khao khát chia sẻ, đem lại kiến thức mà chúng mình đã tích lũy được đến với mọi người. Vì vậy, chúng minh đã tạo nên khóa học này, để dành cho các bạn. Target Khóa học này dành cho những anh em đã có kiến thức cơ bản về lập trình, muốn học Android-Kotlin từ cơ bản cho đến nâng cao, sử dụng những công nghệ mới nhất được Google recommend, sẵn sàng để đi làm tại các doanh nghiệp. Bạn sẽ học những gì Khóa học Android này chúng mình đã rất tâm huyết xây dựng với mong muốn giúp anh em tiếp cận lập trình Mobile nói chung, Android nói riêng, bằng ngôn ngữ Kotlin mạnh mẽ. Chúng mình sẽ ôn cho các bạn từ kiến thức căn bản về OOP, sau đó là lập trình Android cơ bản, và tiếp đến là phần nâng cao với các công nghệ mới nhất, theo chỉ dẫn của Google thông qua một ứng dụng thực tế. Ngoài ra, chúng mình sẽ giới thiệu qua một số Design Pattern thông dụng trong Android/Kotlin, được sử dụng hằng ngày, để giúp các bạn join dự án thực tế một cách dễ dàng hơn. Chúng mình sẽ dạy học thông qua Google Meet, ngoài ra sẽ có 1 kênh chat để trao đổi, đặt câu hỏi về những kiến thức đã dạy và kiến thức bên lề (sử dụng Telegram). Học phí của khóa học 2 500 000 (VND). Ưu đãi: nếu đăng kí theo nhóm 2 người, thì các bạn sẽ được giảm 400 000 (VND) cho mỗi nhóm. Nếu bạn muốn học nhưng lại chưa đủ kinh phí, thì các bạn có thể nộp học phí từng phần. Để đăng kí khóa học và thông tin thêm các vấn đề liên quan, vui lòng liên hệ một trong những phương thức sau: ● ● Facebook https://www.facebook.com/hoc081098, https://www.facebook.com/kotlinandroid081098 hoặc https://www.facebook.com/hoangchungk53 Telegram: https://t.me/PetrusXXXX hoặc https://t.me/chungha1698 Lộ trình Tổng quan khóa học gồm có 3 phần - Phần 1: Ôn lại kiến thức lập trình - OOP căn bản (sử dụng ngôn ngữ Java và Kotlin). - Ngôn ngữ Kotlin. - Giới thiệu về quản lý source code với Git, Github… - Phần 2: Lập trình Android cơ bản - Sử dụng 4 Components (Activity, Service, BroadcastReceiver, Content Provider). - Notification trong Android. - Context, Application Context, Resource trong Android. - Sử dụng Fragment, View, Custom View, Lifecycle API, ViewBinding. - Giới thiệu về Async Programming sử dụng Kotlin Coroutines. - Sử dụng Kotlin Coroutines trong Android, tìm hiểu về ViewModel để giữ data và xử lí logic. - Lưu data bằng SharedPreferences, Local Files, Local Database (Room). - Giao tiếp API / Network bằng Retrofit / OkHttp, Gson, Moshi. - Load ảnh bằng một sô thư viện thông dụng. - Build 1 app demo các kiến thức đã học. - Phần 3: Lập trình Android nâng cao - Giới thiệu về một số Design Pattern trong Android. - Tracking Memory Leak trong Android với provider monitoring và leak canary. - Sử dụng RxJava 3 để xử lý Async network/database… - Sử dụng Dagger Hilt và Koin DI cho Dependency Injection. - Sử dụng Coroutines Flow và Unidirectional data flow trong Android với MVI pattern. - Thiết kế ứng dụng theo Clean Architecture, mô hình MV VM, mô hình MVI. - Sử dụng các thư viện trong Jetpack AndroidX như Navigation, Work Manager, Startup, DataStore. - Tổng kết: Hướng dẫn các học viên làm một app tổng hợp kiến thức toàn khóa, với đầy đủ các chức năng và kiến thức để làm việc tại doanh nghiệp. Chi tiết các phần trong khóa học Phần 1 - - Buổi 1: - Giới thiệu tổng quan khóa học. - Cài đặt môi trường (JDK, Android Studio, IntelliJ, Kotlin Plugin). - Giới thiệu về các concept OOP trong Java (classes, interfaces, abstract class, method, property, constructor), 4 tính chất của OOP (kế thừa, đóng gói, trừu tượng, đa hình), phạm vi truy cập (access modifier), overriding method, overloading method, hàm tĩnh (static method), thuộc tính tĩnh (static property). - Tạo ứng dụng cơ bản. Buổi 2: - Cú pháp trong Kotlin. - Khai báo biến, kiểu dữ liệu cơ bản, Null Safety và Type Casting. - Function trong Kotlin. - Control Flow vòng lặp (for, while, do/while) và range/repeat. - Điều kiện if/else và when. - Class, constructor (primary/secondary),, lateinit variable, Data Class, Sealed Class, Enum Class, Object, Companion Object. - Function, Inline function, infix function, lambda, HOF, variable args. - Các Visibility Modifier trong kotlin (Public, Private, Protected, Internal), kế thừa class. - Getter, setter, property, backing field, constants, overriding property/function. - Demo ứng dụng - Buổi 3: - Kotlin extension functions. - Scope function với let, with, run, apply, also, takeIf, takeLess. - Operator overloading in Kotlin. - Exceptions. - Kotlin Collection (List, Set, Map) và các operation thường dùng. - Kotlin Delegation, Lazy delegation, Built-in delegations. - Pair, Triple, Destructuring declarations. - Hướng dẫn sử dụng Git, Github (commit, add , revert, pull request, push code … ) - Demo ứng dụng - Buổi 4: - Giới thiệu về 4 Component lớn trong Android. - Activity: inflate giao diện, các Lifecycle event của Activity, ViewBinding, start activity bằng Intent, finish activity, truyền dữ liệu cho Activity ở trước, truyền dữ liệu liệu sang Activity sau. Phần 2 - - - - - - Service: Các service trong Android, phân loại các loại service như Background Service, Bound Service, Foreground Service, làm sao khởi tạo 1 service, Lifecycle của service, giao tiếp giữa service với các Component khác và Notification trong service. Broadcast Receiver: Lắng nghe sự kiện trong Android, Cách tạo Broadcast Receiver, đăng ký để nhận event, cách gửi event/intent, đính kèm data bằng Bundle. Content Provider: Sử dụng Content Provider để chia sẻ dữ liệu giữa các app với nhau, thông qua Local File hoặc Sqlite database. Demo ứng dụng sử dụng các component Buổi 5: - Sử dụng Fragment, lifecycle của Fragment, lifecycle của View trong Fragment. - Thiết kế giao diện trong Android. - Các Resources: Drawable, Strings, Themes, Colors, Assets. - Context trong Android. - Các View trong Android như Button, TextView, EditText, RecyclerView, ImageView, SurfaceView, Texture View, ProgressView, Spinner (Dropdown), AppBar, Bottom Bar, Snackbar, Toast. - Các Layout thông dụng trong Android: LinearLayout, RelativeLayout, ConstraintLayout, FrameLayout, Coordinator Layout, - Custom View cơ bản. - Demo ứng dụng Buổi 6: - Giới thiệu về java Thread, lập trình đa luồng, Main Thread (UI Thread) của Android. - Blocking, non-blocking, lập trình bất đồng bộ. - Giới thiệu suspend function và cách sử dụng Coroutines. - Dispatcher trong Coroutines (Main, IO, Default), Coroutine Context, Coroutine Scope, Job và Structured Concurrency. - Cách khởi chạy 1 Coroutines. Cách khởi chạy nhiều Coroutines, chờ kết quả của tất cả. Cancel job đang chạy. - Xử lý Exception trong Coroutines và Supervisor Job. - Demo ứng dụng Buổi 7: - Giới thiệu LiveData và ViewModel, để update UI từ ViewModel 1 cách an toàn, đồng thời giữ Data lúc Configuration Change xảy ra (ví dụ như xoay màn hình, …) và xử lí các logic từ phía UI (View). - Đọc / ghi các data đơn giản ở local storage bằng SharedPreferences. - Đọc / ghi các file trong bộ nhớ của App. - Lưu / truy vấn các data với số lượng nhiều, có quan hệ bằng Room Database. - Demo ứng dụng - - Buổi 8: - Giới thiệu mô hình client - server và giao tiếp giữa chúng với dạng dữ liệu JSON. - Giới thiệu về Resful API, các method phổ biến như GET, POST, PUT, DELETE, … - Sử dụng thư viện Retrofit để thực hiện các Request tới API. - Sử dụng Gson, Moshi để serialize/deserialize các Objects thành JSON String và ngược lại. - Sử dụng OkHttp Interceptor để chỉnh sửa request (thêm/sửa/xóa header, body, …), xử lí responses (ví dụ lỗi 401 thì bắt logout, …). - Demo ứng dụng kiến thức buổi 6 và buổi 7 khi dùng retrofit để gọi Api. Buổi 9: - Load ảnh bằng một sô thư viện thông dụng. - Build 1 app demo tổng hợp tất cả các kiến thức đã học trong cả 2 phần trước. Phần 3 Buổi 10: - Giới thiệu về một số Design Pattern trong Android: - Singleton - Factory - Builder - Prototype - Dependency Injection - Adapter - Observer - Decorator Buổi 11: - - - Các thành phần trong RxJava 3 như Observer, Observable, Scheluders, Disposable, Operator. Giới thiệu các loại Observable như Observable, Single, Maybe, Flowable, Compleable (cách tạo các observable với just, defer, fromIterable, interval, timer, fromCallable, concat, zip,combineLatest, merge, …) Sử dụng các operator thông dụng (map, filter, distinctUntilChanged, flatMap, concatMap, switchMap, concatWith, zipWith, combineLatestWith, debounce, take, skip …). Giới thiệu các loại Subject như PublishSubject, ReplaySubject, BehaviorSubject, AsyncSubject. Giới thiệu các Schedulers như io, computation, trampoline, mainThread (RxAndroid). - Sử dụng RxJava trong Android để tránh block main thread, tăng cường hiệu suất của ứng dụng. Tránh memory leak khi sử dụng RxJava trong Android, theo dõi Leak Memory bằng Leak Canary Demo ứng dụng gọi API với RxJava 3 trong ứng dụng thực tế Buổi 12: - Dependency injection (DI), tại sao phải sử dụng DI thay vì khởi tạo các instance bằng tay. Dagger Hilt: Module, Component, Scope, Qualifier, Provider, Binds, Inject, AndroidEntryPoint, HiltViewModel. Koin: module, bind, factory, single, start Koin application, inject, viewModels. Demo ứng dụng với Dagger Hilt và Koin. Buổi 13: - - - Giới thiệu Coroutines Flow, SharedFlow, StateFlow, các operator và sử dụng Channel. Một số cách tạo Flow (flow builder, flowOf, asFlow, …), SharedFlow (MutableSharedFlow hoặc shareIn operator), StateFlow (MutableStateFlow hoặc stateIn operator), tạo các Channel (Channel.UNLIMITED, Channel.BUFFERED, Channel.CONFLATED, Channel.RENDEZVOUS). Sử dụng các operator trong flow như onEach, catch, transform, scan, reduce, distinctUntilChanged, map, filter, flatMapMerge, flatMapLatest, flatMapConcat, zip, combine, single, first, last, toList, … Flow và Coroutine Dispatcher, cách collect một Flow. Demo ứng dụng gọi API với Flow trong ứng dụng thực tế. Buổi 14: - Giới thiệu các thư viện trong Jetpack AndroidX như Navigation, Work Manager, Startup, DataStore. Tại sao phải sử dụng Jetpack Navigation, demo với Fragment. Sử dụng Work Manager để sync ứng dụng với các nguồn data từ xa, hoặc thực các công việc lean up ở background. Sử dụng thư viện Startup để giảm thiểu thời gian khởi động ứng dụng. Sử dụng DataStore để lưu/đọc data từ local 1 cách an toàn hơn (sử dụng Coroutines). Giới thiệu về Clean Architecture: Domain layer, Data Later, Presentation Layer. Giới thiệu về mô hình MVVM (Model - View - ViewModel) và các thành phần. - Giới thiệu về mô hình MVI (Model - View - Intent) và các thành phần. Buổi 15: - Hướng dẫn làm ứng dụng cuối khóa theo chủ đề học viên chọn, theo mô hình MVVM với các công nghệ đã học. Buổi 16: - Review code, feedback tới các học viên về các ứng dụng cuối khóa. - Kết thúc khóa học.