Thông Thạo Jetpack – Phần 1 – Jetpack Là Gì?

Posted by
Rating: 5.0/5. From 7 votes.
Please wait...

Xin chào tất cả các bạn.

Chào mừng các bạn đến với bài viết đầu tiên về chủ đề Jetpack. Đây là bài viết đánh dấu việc mình cố gắng quay trở lại nhịp viết bài thường xuyên sau hơn 1 năm nghỉ “dịch”.

Với việc quay trở lại viết, không gì tốt hơn bằng tạm thời cứ mở ra một chủ đề mới, cho nó có khí thế, sau này mình sẽ hoàn thành các bài viết còn dang dở sau các bạn nhé.

Nhân tiện khi nói về các bài dang dở, mình xin chia sẻ một chút rằng tại sao mình lại viết mà không xong? Một phần là các bài đó, cũng như chủ đề mới này của mình, tất cả mình đều không có sẵn kịch bản hay sườn bài dài lâu cho chúng. Mình chỉ đơn thuần phân các kiến thức lớn thành các module nhỏ, mỗi module này sẽ có những mục nhỏ hơn, được chia thành các bài viết, sắp xếp theo một chủ ý nào đó mà mình nghĩ khi đọc qua các bạn sẽ dễ dàng theo dõi và cùng trải qua các bài viết với mình. Do vậy mà các phần được viết ngày một thêm vào, mà không biết liệu phần nào là kết thúc. Tuy vậy mình vẫn thường xuyên tìm cách kết thúc các phần đã được mở ra này, các bài viết trước và cả Jetpack này cũng vậy nhé. Một vài chia sẻ cho bạn nào còn nhiều thắc mắc với mình về vấn đề này.

Quay lại Jetpack. Chủ đề này không mới, mình đọc sơ qua cũng đã thấy biết bao nhiều tài liệu nói về nó rồi. Ngay cả trước đây mình cũng từng viết vài bài về các chủ đề nhỏ thôi của Jetpack. Vậy mình xin được viết lại câu chuyện về Jetpack này, có vay mượn các kiến thức từ các bậc “tiền bối”, sửa chữa lại các bài mà mình đã viết, kết hợp với tiêu chí “lập trình dễ dàng” của mình vào nữa, để làm sao cho khái niệm và kiến thức Jetpack trở nên rõ ràng, gần gũi và dễ dàng tiếp cận hơn nhé. Mời các bạn cùng bắt đầu tìm hiểu.

Jetpack Là Gì?

Jetpack là một bộ các thư viện được Google giới thiệu từ tháng 5 năm 2018. Vâng rất nhiều thư viện. Và bộ thư viện này vẫn đang được Google bổ sung thêm cho tới ngày nay. Một trong số chúng là các thư viện dùng để thay thế các thư viện cũ mà trước đây các lập trình viên Android vẫn quen dùng. Phần lớn còn lại là các thành phần (hay còn gọi là component) mới. Không có một ràng buộc nào bắt bạn phải sử dụng hoàn toàn Jetpack cho việc xây dựng ứng dụng của bạn cả, nhưng nếu biết đến nó và nắm bắt được nó, như logo hay ý nghĩa mà Jetpack mang lại, nó sẽ là một “bệ phóng tên lửa”, sẽ tạo một lực đẩy mạnh mẽ đẩy bạn cũng như ứng dụng của bạn tiến nhanh về phía trước.

Ý nghĩa thú vị của Jetpack
Ý nghĩa thú vị của Jetpack

Thực ra nếu bạn có thử trải nghiệm xây dựng ứng dụng thông qua một vài thành phần ở Architecture Component mà mình đã giới thiệu, bạn sẽ thấy rằng các thư viện trong Jetpack nó giải quyết các bài toán khó khăn trong lập trình Android như thế nào.

Bên cạnh những thành phần mới mà Jetpack mang lại này, Google còn muốn thông qua đó giới thiệu thêm các nguyên tắc lập trình mới. Các nguyên tắc này vừa giúp sử dụng các thành phần trong Jetpack hiệu quả, vừa giúp xây dựng ứng dụng nhanh chóng và ít lỗi hơn. Chúng ta sẽ cùng nhau xem xét các thành phần Jetpack và các nguyên tắc ở những bài sau nhé.

Tại Sao Phải Dùng Jetpack?

Như mình cũng nói sơ qua trên đây rồi, việc sử dụng Jetpack là không hoàn toàn bắt buộc. Jetpack được Google thiết kế thành các gói thư viện “mở”. Có nghĩa là nó không có sẵn trong Android SDK, khi nào bạn muốn dùng thư viện Jetpack nào thì thêm thư viện đó vào. Có một số thứ buộc chúng ta phải dùng, như thư viện tương thích ngược androidx.appcompat, phần còn lại là tùy thuộc vào sự mong muốn sử dụng của bạn, thích hay biết thư viện Jetpack nào thì thêm thư viện đó. Bạn vẫn có thể thích sử dụng cách cũ hơn nên “né” Jetpack, điều đó là tùy bạn. Với thuận lợi ban đầu này thì bạn có thấy cảm tình với Jetpack chưa nào.

Dù việc sử dụng Jetpack hay không là “tùy duyên”, thì mình vẫn mong muốn chúng ta đều phải biết Jetpack và các thư viện kèm theo, biết càng nhiều càng tốt. Vì sao thì mình liệt kê như dưới đây.

Trước hết, theo kinh nghiệm của mình, nếu bạn không biết Jetpack là gì, bạn sẽ là một lập trình viên lỗi thời, và sự nghiệp đi phỏng vấn xin việc của bạn chắc chắn sẽ gặp vô vàn khó khăn do nhà tuyển dụng sẽ luôn thích hỏi đến các kiến thức về chủ đề này. Và bạn sẽ không hề muốn cứ luôn phải trả lời “dạ vấn đề này em chưa biết nhưng em sẽ tìm hiểu sau”. Sau là bao giờ nếu không phải bây giờ?

Nhưng nếu bạn không có ý định tìm việc mới? Thì việc không biết Jetpack sẽ khiến bạn vẫn loay hoay với những vấn đề đau đầu trong quá trình xây dựng một ứng dụng Android, trong khi các lập trình viên khác biết Jetpack sẽ dễ dàng và nhanh chóng hơn trong việc giải quyết các vấn đề mà bạn đang vướng phải này. Các vấn đề này là gì? Mình tóm lược lại như sau.

  • Loay hoay quản lý các vòng đời của Activity hay Fragment. Dĩ nhiên là một lập trình viên Android, điều tiên quyết là bạn phải hiểu rõ vòng đời của Activity hay Fragment rồi. Nhưng nếu logic của code đang nằm trong chính Activity hay Fragment thì không có gì để nói, vấn đề là bạn có thể phải cần xây dựng các logic ở các lớp khác, ở thread khác, nhưng vẫn muốn bám sát vào vòng đời của Activity hay Fragment, đó mới là vấn đề đau đầu. Và Jetpack sẽ giúp bạn giải quyết nó.
  • Lưu giữ dữ liệu của Activity hay Fragment trong suốt quá trình sống của màn hình đó, dù cho user có xoay ngang hay dọc thiết bị, hay các Fragment được thay thế, thì dữ liệu này vẫn được bảo toàn. Jetpack sẽ giúp bạn giải quyết nó.
  • Tránh các lỗi crash ứng dụng liên quan đến memory leak. Jetpack cũng giúp giải quyết tốt chuyện này.
  • Và còn nhiều lỗi khác nữa mà Jetpack cũng sẽ giúp bạn xây dựng các ứng dụng Android một cách nhanh hơn, ít lỗi hơn, dễ quản lý hay sửa chữa hơn, và cũng dễ xây dựng các Unit Test hơn.

Tổng Quan Về Android Jetpack

Tuy thư viện của Jetpack khá nhiều, nhưng khi vừa mới giới thiệu, Google đã nhóm chúng làm 4 phần để các lập trình viên dễ dàng tiếp cận hơn. Chúng được thể hiện theo mô hình sau.

4 phần chính trong Android Jetpack (mô hình ban đầu của Google)
4 phần chính trong Android Jetpack (mô hình ban đầu của Google)

Nên nhớ đây chỉ là mô hình ở lần giới thiệu đầu tiên của Google về Jetpack. Những thư viện được đánh dấu là new! là những thứ mới toanh từ ngày ra mắt, số còn lại thì đã có sẵn rồi.

Một năm sau đó, Google bổ sung vào bộ sưu tập Jetpack này một loạt thư viện nữa. Bao gồm CameraX hay các thư viện nâng cấp cho các thư viện trước đây. Và đặc biệt, thời gian này còn có một khái niệm mới ra đời, đó là Jetpack Compose (đây là gì thì mình sẽ có loạt bài viết riêng, mặc dù chúng cũng nằm trong họ Jetpack nhưng kiến thức về chúng là rất nhiều, do đó mình phải tách ra nói riêng thôi).

Không dừng lại, Google vẫn thường liên tục giới thiệu lần lượt các thư viện mới cho Jetpack. Và mình cũng không biết rằng liệu đến giai đoạn hiện tại, Google đã cho ra hết các thành phẩm Jetpack hay chưa.

Chúng ta cùng xem sơ qua lần lượt chức năng của từng nhóm chính nhé, còn các thành phần cụ thể như thế nào thì mình hẹn các bạn ở các bài viết riêng.

Foundation

Các thành phần ở nhóm này được gọi là các thành phần nền tảng. Cũng như tên gọi, chúng sẽ là các thư viện giúp tác động đến nền tảng của Android, như thư viện tương thích ngược, các thư viện hỗ trợ Kotlin cũng như hỗ trợ cho việc testing. Chúng bao gồm App Compat, Android KTX, Multidex, Test,…. Chắc chắn chúng ta sẽ có thời gian để đào sâu vào từng thành phần này sau nhé.

Architecture

Các thành phần ở nhóm này sẽ tập trung vào việc làm sao có thể xây dựng một ứng dụng nhanh chóng, dễ dàng kiểm lỗi cũng như dễ bảo trì, sữa chữa sau này. Mình cũng đã có một loạt bài viết về một số thành phần trong Architecture Component này. Giờ thì chúng ta có dịp tổng hợp lại cho nó đầy đủ hơn. Có thể kể đến các thành phần này bao gồm Data Binding, Lifecycles, LiveData, Navigation, Paging, Room, ViewModel, WorkManager,….

Behavior

Các thành phần ở nhóm này sẽ giúp ứng dụng của chúng ta có thể kết nối dễ dàng đến các dịch vụ của hệ thống. Bao gồm Download Manager, Media & Playback, CameraX, Notifications, Permissions, Preferences, Sharing, Slices,…. Nếu những thứ này quá lạ lẫm với bạn thì… không sao, chúng ta sẽ nói đến nó từ từ.

UI

Nhóm thành phần cuối cùng này cũng khá quan trọng. Nó giúp chúng ta xây dựng nên ứng dụng với giao diện đẹp hơn, chuyên nghiệp hơn và sáng sủa hơn. Như Animation and transitions, Auto, Emoji, Fragment, Layout, Palette, TV, Wear,…. Và dĩ nhiên chúng ta cũng sẽ đi đến từng thành phần này sau nhé.

Kết Luận

Chúng ta vừa mới dạo qua một chút, vâng một chút về Jetpack thôi. Kiến thức về Jetpack nó rộng lớn như chính hệ điều hành Android vậy. Do đó mình cũng không hoàn toàn tự tin rằng kiến thức của mình là đủ. Mình chỉ hi vọng mình biết đến đâu thì nó đúng đến đó, vừa chia sẻ vừa học hỏi. Nên nếu có những thắc mắc, phản biện thì các bạn hãy để lại bình luận, hoặc chat với mình nhé, mình sẽ nhanh chóng sửa lỗi để các bài viết của mình luôn mang đến kiến thức kịp thời và đúng đắn nhất.

Cảm ơn bạn đã đọc các bài viết của Yellow Code Books. Bạn hãy ủng hộ blog bằng cách:
– Đánh giá 5 sao ở mỗi bài viết nếu thấy thích.
– Comment bên dưới mỗi bài viết nếu có thắc mắc.
– Để lại địa chỉ email của bạn ở thanh bên phải để nhận được thông báo sớm nhất khi có bài viết mới.
– Chia sẻ các bài viết của Yellow Code Books đến nhiều người khác.
– Ủng hộ blog theo hướng dẫn ở thanh bên phải để blog ngày càng phát triển hơn.

6 comments

  1. Chào mừng Ad trở lại. Cứ nghĩ sao Ad bị cách ly lâu vậy, còn hơn anh Tiệp :))))

    Rating: 5.0/5. From 4 votes.
    Please wait...
  2. Mong các bài viết mới từ Ad!

    No votes yet.
    Please wait...
  3. Hóng bài viết tiếp của ad 😀

    No votes yet.
    Please wait...
  4. Hi vọng ad viết càng nhiều càng tốt gần như tất tần tần kiến thức ad biết về android thì tốt quá

    No votes yet.
    Please wait...
  5. Welcome back 🙂

    No votes yet.
    Please wait...
  6. <3

    No votes yet.
    Please wait...

Leave a Reply