Jetpack — คืออะไร คอมโพเนนต์ทางสถาปัตยกรรม

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-05-01 เวลาอ่าน: 9 นาที

Jetpack คือชุดไลบรารี Android จาก Google ที่ช่วยให้การพัฒนาง่ายขึ้นและเร่งสร้างแอปพลิเคชันที่เสถียร คอมโพเนนต์อย่าง ViewModel, Room และ Navigation แก้ปัญหางานทั่วไป: การจัดการวงจรชีวิต การจัดเก็บข้อมูล และการนำทาง ตามข้อมูลจาก Android Developers (2026) Jetpack ครอบคลุมไลบรารีกว่า 50 รายการ ซึ่งแต่ละรายการสามารถย้อนกลับเข้ากันได้กับ Android 5.0 (API 21) ผ่าน AndroidX — ไลบรารีความเข้ากันได้ที่แทนที่ Support Library

ประเด็นสำคัญ

  • Android Jetpack — ชุดไลบรารีกว่า 50 รายการที่เร่งการพัฒนาแอป Android และรับประกันความเข้ากันได้ย้อนหลังผ่าน AndroidX
  • ViewModel ทนต่อการหมุนหน้าจอและเก็บข้อมูลเมื่อ Activity ถูกสร้างใหม่ ป้องกันการสูญเสียข้อมูลที่ผู้ใช้ป้อน
  • Room — ชั้น ORM เหนือ SQLite พร้อมการตรวจสอบคำสั่ง SQL ในเวลาคอมไพล์และรองรับ coroutine
  • Navigation Component จัดการการเปลี่ยนระหว่างหน้าจอผ่านกราฟนำทางพร้อมอาร์กิวเมนต์ที่ปลอดภัยชนิด
  • Lifecycle ช่วยให้ตอบสนองต่อเหตุการณ์วงจรชีวิตของ Activity/Fragment โดยไม่ต้องใช้โค้ด boilerplate ในตัวควบคุม

Android Jetpack คืออะไร

Android Jetpack คือชุดรวมไลบรารี เครื่องมือ และคำแนะนำด้านสถาปัตยกรรมจาก Google ซึ่งเปิดตัวในปี 2018 ที่ Google I/O Jetpack เข้ามาแทนที่ Support Library และ Android Architecture Components โดยรวมเข้าด้วยกันเป็นระบบนิเวศเดียว ก่อน Jetpack แต่ละไลบรารี Android ได้รับการอัปเดตอย่างอิสระ ทำให้เกิดความขัดแย้งของเวอร์ชัน Jetpack ซิงโครไนซ์เวอร์ชันภายใต้ตัวระบุ AndroidX เดียว และนำเสนอโมเดลเวอร์ชันหลักที่เสถียรพร้อมแพตช์ย่อย

ไลบรารี Jetpack แบ่งออกเป็นสี่หมวดหมู่: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat) แต่ละหมวดหมู่จัดการงานของเลเยอร์เฉพาะของแอปพลิเคชัน ตั้งแต่การจัดการข้อมูลไปจนถึงอินเทอร์เฟซผู้ใช้

ปรัชญาของ Jetpack

Google ส่งเสริมหลักการ Jetpack สามประการ: accelerate development (boilerplate น้อยลง, ตรรกะทางธุรกิจมากขึ้น), eliminate boilerplate (ViewModel ขจัดการบันทึกสถานะด้วยตนเอง, Room ขจัดการเขียน SQLiteOpenHelper) และ build with confidence (แต่ละไลบรารีผ่านการทดสอบกว่า 15,000 ครั้งก่อนวางจำหน่าย) ตามข้อมูลจาก Android Developers (2026) แอปที่ใช้ Jetpack มีการพังที่เกี่ยวข้องกับวงจรชีวิตน้อยลง 30%

AndroidX เป็นพื้นฐาน

ไลบรารี Jetpack ทั้งหมดเผยแพร่ภายใต้ตัวระบุ AndroidX (อาร์ติแฟกต์อย่าง androidx.*) AndroidX แทนที่ Support Library (อาร์ติแฟกต์อย่าง com.android.support.*) โดยแบ่งไลบรารีแบบเสาหินออกเป็นอาร์ติแฟกต์แบบโมดูลาร์พร้อมการกำหนดเวอร์ชันอิสระ การโยกย้ายไปยัง AndroidX ทำได้ผ่านตัวเลือก android.useAndroidX=true ใน gradle.properties — Android Studio จะแปลงการนำเข้าโดยอัตโนมัติ

คอมโพเนนต์ทางสถาปัตยกรรม: ViewModel, Lifecycle, LiveData

ViewModel คือคอมโพเนนต์ศูนย์กลางของสถาปัตยกรรม Jetpack ที่เก็บข้อมูล UI ต่างจาก Activity ที่ถูกทำลายเมื่อหมุนหน้าจอ ViewModel ยังคงอยู่ในหน่วยความจำ ผู้ใช้กรอกฟอร์ม หมุนโทรศัพท์ — ข้อมูลจะไม่สูญหาย ViewModel จะถูกล้างโดยอัตโนมัติเมื่อ LifecycleOwner (Activity หรือ Fragment) สิ้นสุดวงจรชีวิตอย่างถาวร (finish)

kotlin
class ProfileViewModel : ViewModel() {

    private val _userName = MutableLiveData<String>()
    val userName: LiveData<String> = _userName

    fun loadProfile(userId: String) {
        viewModelScope.launch {
            val user = repository.getUser(userId)
            _userName.value = user.name
        }
    }
}

@OptIn(ExperimentalLifecycleApi::class)
class MyObserver : LifecycleObserver {
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        println("หน้าจอเริ่มทำงาน")
    }
}

LiveData — คอนเทนเนอร์ข้อมูลที่สังเกตได้ซึ่งเคารพวงจรชีวิต หากหน้าจอไม่ปรากฏ (onStop) LiveData จะไม่ส่งการอัปเดต — ซึ่งป้องกันการรั่วไหลของหน่วยความจำและการพังเมื่อพยายามอัปเดต Activity ที่ไม่มีอยู่ Lifecycle — คลาสที่เก็บสถานะปัจจุบัน (CREATED, STARTED, RESUMED) และอนุญาตให้คอมโพเนนต์อื่นสมัครรับการเปลี่ยนแปลงสถานะ เมื่อรวมกันแล้ว ViewModel, LiveData และ Lifecycle จะเป็นรากฐานของสถาปัตยกรรมเชิงรับของ Android

ViewModelScope และ coroutine

viewModelScope — CoroutineScope ในตัวที่ผูกกับวงจรชีวิตของ ViewModel coroutine ทั้งหมดที่เริ่มในขอบเขตนี้จะถูกยกเลิกโดยอัตโนมัติเมื่อ ViewModel ถูกล้าง ซึ่งช่วยขจัดการจัดการ Disposable และ CompositeDisposable ด้วยตนเองในแต่ละ ViewModel การทำงานกับ viewModelScope ต้องการการพึ่งพา androidx.lifecycle:lifecycle-viewmodel-ktx

Room: การทำงานกับฐานข้อมูลบน Android

Room คือไลบรารี ORM ของ Jetpack ที่ให้เลเยอร์นามธรรมเหนือ SQLite แทนที่จะเขียนคำสั่ง SQL ดิบและแปลง Cursor เป็นวัตถุด้วยตนเอง นักพัฒนาประกาศ Entity (ตาราง), DAO (Data Access Object) และ Database (จุดเข้า) Room จะตรวจสอบคำสั่ง SQL ในเวลาคอมไพล์ผ่านคำอธิบายประกอบ @Query — หากตารางหรือคอลัมน์ไม่มีอยู่ การสร้างจะล้มเหลวพร้อมข้อผิดพลาดที่ชัดเจน

kotlin
@Entity
data class User(
    @PrimaryKey val id: String,
    val name: String,
    val email: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM User WHERE id = :userId")
    suspend fun getUser(userId: String): User?

    @Insert
    suspend fun insertUser(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Entity User อธิบายตารางที่มีสามคอลัมน์ DAO ประกาศฟังก์ชัน suspend สำหรับทำงานกับ coroutine — คำสั่งจะทำงานบนเธรดพื้นหลังโดยอัตโนมัติ Room รองรับการโยกย้ายผ่านคำอธิบายประกอบ @Migration: นักพัฒนาอธิบายสคริปต์ SQL สำหรับการเปลี่ยนระหว่างเวอร์ชัน และ Room จะดำเนินการโดยไม่สูญเสียข้อมูล หากไม่มีการโยกย้าย Room จะโยน IllegalStateException — ซึ่งป้องกันโครงการจากการสูญเสียข้อมูลโดยไม่ตั้งใจเมื่ออัปเดตสคีมา

TypeConverters และความสัมพันธ์

Room เก็บเฉพาะชนิดดั้งเดิมและตัวหุ้มเท่านั้น สำหรับการเก็บรายการ Date หรือวัตถุที่กำหนดเอง จะใช้ @TypeConverter — เมธอดแบบสแตติกที่แปลงชนิดเป็น String (JSON) หรือ Long (timestamp) ความสัมพันธ์ระหว่างตารางถูกจำลองผ่านวัตถุที่ซ้อนกันพร้อมคำอธิบายประกอบ @Relation และคลาส POJO ช่วยเหลือพร้อม @Transaction สำหรับคำสั่ง join ที่มีประสิทธิภาพ

Navigation Component — ไลบรารี Jetpack สำหรับจัดการการเปลี่ยนระหว่างหน้าจอ แทนที่จะเรียก FragmentTransaction ด้วยตนเอง นักพัฒนาสร้างกราฟนำทาง (ไฟล์ XML ที่มีโหนดปลายทาง) และระบบจะสร้างคลาส Directions พร้อมเมธอดการเปลี่ยนที่ปลอดภัยชนิด Navigation Component รับประกันการทำงานที่ถูกต้องของ back stack, deep links และการส่งอาร์กิวเมนต์ระหว่างหน้าจอ

kotlin
// nav_graph.xml
// 
//     android:name=".ProfileFragment">
//     
//         android:defaultValue="-1"
//         app:argType="integer" />
// 

// ในโค้ด fragment:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        loadProfile(args.userId)
    }
}

อาร์กิวเมนต์ userId ถูกส่งในกราฟนำทางพร้อมการระบุชนิด (integer) และค่าเริ่มต้น คลาส ProfileFragmentArgs ถูกสร้างขึ้นโดยอัตโนมัติโดยปลั๊กอิน Navigation Safe Args — ประกอบด้วยอาร์กิวเมนต์ทั้งหมดพร้อมชนิด Kotlin ที่ถูกต้อง Deep links ถูกกำหนดค่าในกราฟ: app:deepLink="app://profile/{userId}" Navigation Component จะแยกวิเคราะห์ URL และสร้าง back stack ราวกับว่าผู้ใช้ได้นำทางผ่านอินเทอร์เฟซ

การนำทางด้านล่างและการนำทางแบบมีเงื่อนไข

Navigation Component ผสานรวมกับ BottomNavigationView ผ่าน NavController: แต่ละรายการเมนูเชื่อมโยงกับปลายทางในกราฟ การสลับระหว่างแท็บจะไม่สร้าง fragment ใหม่ — Navigation Component เก็บสถานะผ่าน NavBackStackEntry สำหรับการนำทางแบบมีเงื่อนไข (แสดงหน้าเข้าสู่ระบบหากไม่ได้รับการรับรองความถูกต้อง) จะใช้ navController.navigate(condition) พร้อมการตรวจสอบใน onCreate

AndroidX: Support Library ยุคใหม่

AndroidX คือสถาปัตยกรรมที่ออกแบบใหม่ของ Support Library ซึ่งแต่ละไลบรารีได้รับอาร์ติแฟกต์ของตนเองพร้อมเวอร์ชันอิสระ แทนที่ com.android.support:appcompat-v7:28.0.0 เพียงตัวเดียว AndroidX มีให้เลือก androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 และอื่น ๆ ซึ่งช่วยขจัดปัญหาที่การพึ่งพาต่าง ๆ ดึง Support Library คนละเวอร์ชันทำให้เกิดความขัดแย้ง

การโยกย้ายไปยัง AndroidX ทำได้โดยอัตโนมัติใน Android Studio 3.2+ ผ่านเมนู Refactor → Migrate to AndroidX Studio จะแทนที่การนำเข้าทั้งหมดในไฟล์ Java/Kotlin, manifest และทรัพยากร ความเข้ากันได้ย้อนหลัง คือข้อได้เปรียบหลักของ AndroidX: ไลบรารีทำงานบน Android 5.0 (API 21) ขึ้นไป ครอบคลุม 97% ของอุปกรณ์ที่ใช้งานอยู่ตาม Google Play Console (2025)

อาร์ติแฟกต์หลักของ AndroidX

อาร์ติแฟกต์ที่ใช้บ่อยที่สุด: appcompat (ธีมมืด, Material Design บน API เก่า), recyclerview (รายการปรับเปลี่ยนได้พร้อม ViewHolder), constraintlayout (คอนเทนเนอร์ยืดหยุ่นพร้อมลำดับชั้นแบบราบ), cardview (การ์ด Material Design), preference (หน้าจอการตั้งค่าพร้อมสไตล์ Material) แต่ละอาร์ติแฟกต์มีการกำหนดเวอร์ชันอิสระช่วยเร่งการส่งมอบการแก้ไขโดยไม่ต้องอัปเดตทั้งแพ็คเกจ

ไลบรารี Jetpack สำคัญอื่น ๆ

นอกเหนือจาก Architecture และ AndroidX แล้ว Jetpack ยังรวมไลบรารีเฉพาะทางมากมายสำหรับงานพัฒนามือถือทั่วไป WorkManager — สำหรับงานเบื้องหลังที่มีการดำเนินการรับประกัน (การซิงโครไนซ์ การอัปโหลดบันทึก) รองรับงานเป็นระยะและงานที่เลื่อนออกไป รวมถึงข้อจำกัดด้านเครือข่ายและแบตเตอรี่ DataStore — ตัวแทน SharedPreferences ที่ใช้ coroutine รองรับคุณสมบัติแบบชนิด (Preferences DataStore) และ Protocol Buffers (Proto DataStore)

  • Hilt — เฟรมเวิร์ก DI ที่ใช้ Dagger ซึ่งช่วยลดความซับซ้อนของการฉีดการพึ่งพาผ่านคำอธิบายประกอบ @HiltViewModel, @Inject, @Module การผสานรวมในตัวกับ ViewModel และ Navigation
  • Paging 3 — ไลบรารีสำหรับการโหลดข้อมูลแบบแบ่งหน้าจากเครือข่าย/ฐานข้อมูล รองรับ RemoteMediator (เครือข่าย + แคช), StateFlow และ Compose
  • CameraX — API สำหรับทำงานกับกล้อง ที่แยกความแตกต่างของผู้ผลิต (Samsung, Xiaomi, Honor) ผ่านอินเทอร์เฟซ CameraController แบบรวม
  • Security Crypto — การเข้ารหัสข้อมูลผ่าน EncryptedSharedPreferences และ EncryptedFile บนพื้นฐาน AES-256 พร้อมคีย์หลักใน Android Keystore

แต่ละไลบรารีมี SDK ขั้นต่ำและอาร์ติแฟกต์ของตนเอง Google เผยแพร่เวอร์ชันหลักปีละครั้ง (พร้อมกับการเปิดตัว Android) และแพตช์ความปลอดภัยรายไตรมาส คำแนะนำ — ให้รวมเฉพาะไลบรารีที่จำเป็นเพื่อไม่ให้ขนาด APK เพิ่มขึ้น คอลเล็กชัน Jetpack เต็มรูปแบบ (อาร์ติแฟกต์ทั้งหมด) มีน้ำหนักกว่า 20 MB แต่แอปทั่วไปใช้ 5–7 ไลบรารี เพิ่ม 3–5 MB ให้กับ APK

คำถามที่พบบ่อย

ฉันต้องโยกย้ายจาก Support Library ไปยัง AndroidX หรือไม่

ใช่ Google หยุดรองรับ Support Library ในปี 2019 ไลบรารี Jetpack ใหม่ทั้งหมดและ Google Play Services ต้องการ AndroidX การโยกย้ายใช้เวลา 30–60 นาทีผ่าน Android Studio

สามารถใช้ Jetpack กับ Java หรือเฉพาะ Kotlin เท่านั้น

Jetpack เข้ากันได้อย่างสมบูรณ์กับ Java อย่างไรก็ตาม ฟีเจอร์มากมาย (viewModelScope, coroutine, Compose) มีให้ใช้เฉพาะใน Kotlin เท่านั้น Google แนะนำ Kotlin สำหรับโปรเจกต์ใหม่

ViewModel แตกต่างจาก onSaveInstanceState อย่างไร

ViewModel เก็บวัตถุในหน่วยความจำและทนต่อการหมุน onSaveInstanceState เหมาะสำหรับชนิดดั้งเดิมที่ซีเรียลไลซ์ได้ (Bundle) เท่านั้น ViewModel จะไม่ถูกเก็บรักษาเมื่อกระบวนการถูกฆ่า — สำหรับสิ่งนั้นจำเป็นต้องใช้ SavedStateHandle

เมื่อใดควรใช้ WorkManager แทน coroutine

WorkManager — สำหรับงานที่ต้องดำเนินการแม้หลังจากปิดแอป: การซิงโครไนซ์ การอัปโหลดบันทึก การส่งข้อมูลวิเคราะห์ Coroutine — สำหรับงานที่ผูกกับหน้าจอ

วิธีโยกย้ายจาก SharedPreferences ไปยัง DataStore

แทนที่การนำเข้า SharedPreferences ด้วย DataStore อ่านผ่าน dataStore.data.first() (suspend) เขียนผ่าน dataStore.edit { ... } DataStore เป็นแบบอะซิงโครนัสและป้องกัน ANR

สรุป

  • Android Jetpack — ชุดไลบรารีกว่า 50 รายการสำหรับการพัฒนา Android รวมเป็นหนึ่งภายใต้ AndroidX พร้อมความเข้ากันได้ย้อนหลังถึง API 21
  • ViewModel ทนต่อการหมุนหน้าจอและเก็บข้อมูล UI ในขณะที่ Lifecycle แจ้งคอมโพเนนต์เกี่ยวกับการเปลี่ยนแปลงสถานะ Activity/Fragment
  • Room — ORM ที่ปลอดภัยชนิดเหนือ SQLite พร้อมการตรวจสอบคำสั่งในเวลาคอมไพล์ การโยกย้าย และการรองรับ coroutine
  • Navigation Component จัดการการเปลี่ยนผ่านกราฟพร้อมอาร์กิวเมนต์ที่ปลอดภัยชนิดและ deep links อัตโนมัติ
  • WorkManager รับประกันการดำเนินงานเบื้องหลังแม้หลังจากปิดแอป DataStore แทนที่ SharedPreferences
  • Jetpack แบ่งออกเป็นสี่หมวดหมู่: Architecture, UI, Behavior, Foundation — แต่ละหมวดหมู่ครอบคลุมเลเยอร์แอปพลิเคชันของตนเอง
  • แอปที่ใช้ Jetpack มีการพังที่เกี่ยวข้องกับวงจรชีวิต น้อยลง 30% และพัฒนาได้เร็วกว่าด้วยโซลูชันทางสถาปัตยกรรมที่พร้อมใช้งาน

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม