# Koin căn bản: single và viewModel

> Vấn đề mà dependency injection giải, hai vòng đời single và viewModel, và vì sao initKoin() phải gọi ngoài composition.

- URL: https://dantech.academy/courses/kotlin-mobile-101/04-koin-di/lesson-01-koin-basics
- Khóa học: [Kotlin Mobile 101](https://dantech.academy/courses/kotlin-mobile-101.md)
- Module: Koin Và Dependency Injection
- Thời lượng: 12 phút
- Độ khó: beginner
- Truy cập: Dành cho học viên

## Mục tiêu

- Giải thích vấn đề mà dependency injection giải, bằng một ví dụ cụ thể trong TicTac
- Phân biệt hai vòng đời single và viewModel, và biết initKoin() phải chạy ở đâu

## Nội dung bài học

1. Vấn Đề: Ai Tạo Ra Ai
2. Module: Bản Thiết Kế Của Đồ Thị
3. Hai Vòng Đời
4. initKoin() Phải Chạy Ngoài Composition

## Học cùng AI agent

Toàn bộ bài học dành cho học viên của khóa. Học viên mở bài trên web và bấm nút **Markdown** để copy toàn bài, rồi dán vào Claude, ChatGPT, Cursor hoặc agent bạn đang dùng. Nhanh hơn: tạo token ở `/profile/ai-agents` và agent đọc bài trực tiếp qua MCP.

- [Đăng ký khóa học](https://dantech.academy/kotlin-mobile-101/checkout)

---

- Bài trước: [ViewModel với StateFlow](https://dantech.academy/courses/kotlin-mobile-101/03-mvvm/lesson-03-viewmodel-with-stateflow.md)
- Bài tiếp theo: [Dependency injection: get(), bind theo contract và call site](https://dantech.academy/courses/kotlin-mobile-101/04-koin-di/lesson-02-injecting-dependencies.md)
