Android

Thư viện framework và thư viện support trong Android (Bài 1).

Nếu bạn đã tham gia lập trình Android được một thời gian, thì bạn đã quen thuộc các thư viện support, chẳng hạn như trong file build.gradle với module app, bạn có dòng
compile ‘com.android.support:appcompat-v7:25.1.0’. Hay trong XML của bạn, bạn dùng Toolbar với cặp tag <android.suppport.v7.widget.Toolbar> chứ không phải đơn giản chỉ là <Toolbar>. Hoặc trong Java, bạn lại có android.support.v7.app.AlertDialog.Builder dialog = new android.support.v7.app.AlertDialog.Builder(Context c).

android-design-support-library

Bài viết này tập trung giới thiệu chung về sự khác biệt giữa thư viện framework và thư viện support. Các vấn đề sâu hơn sẽ được trình bày trong các bài tiếp theo.

Khoan nói về việc viết code, chúng ta hãy lên kế hoạch cho một buổi đi chơi xa đâu đó, cụ thể hơn là khâu ăn uống. Là người được phân công làm công tác hậu cần, bạn có hai phương án: Hoặc là “tới đó rồi tính” , hoặc là chuẩn bị sẵn thức ăn và nước uống để đem theo.

Nếu bạn chọn phương án thứ nhất, thì tương tự như bạn đang dùng thư viện framework  để viết ứng dụng, chẳng hạn như android.app.AlertDialog. Thư viện này là tập hợp các class có sẵn trong phần core của hệ điều hành Android. Khi ứng dụng bạn truy cập đến các class này thì ứng dụng sẽ yêu cầu gọi class mặc định có sẵn trong hệ điều hành ra để thực thi.

Nếu bạn chọn phương án thứ hai, thì không khác gì bạn dùng thư viện support trong ứng dụng của mình, chẳng hạn như android.support.v7.app.AlertDialog. Thư viện này là tập hợp các class sẽ được “nhồi nhét” vào tập tin cài đặt APK mà bạn build ra. Khi ứng dụng bạn truy cập đến các class này thì ứng dụng chỉ việc gọi chúng theo kiểu “cây nhà lá vườn” ra chạy, do đó ứng dụng sẽ không xin quá nhiều lệnh từ hệ thống.

 

Để so sánh, tôi sẽ làm một ví dụ ngắn gọn, với ứng dụng gồm 1 activity duy nhất, với 2 buttons. Button đầu tiên sẽ hiển thị 1 android.app.AlertDialog, còn button thứ 2 sẽ hiển thị 1 android.support.v7.app.AlertDialog với cùng nội dung. Nếu bạn muốn chạy thử, hãy chạy trên máy ảo Android 4.4.4 KitKat trở về 2.3 Gingerbread.

File AndroidManifest.xml

File Main.java (activity duy nhất)

File main_layout

Và cuối cùng là file styles.xml

Và đây là hình ảnh khi ứng dụng vừa run lên trên máy ảo AVD chạy Android 4.1 Jelly Bean:

s1

 

Khi tôi nhấn Button đầu tiên, SHOW ANDROID.APP.ALERTDIALOG:

s2

Khi tôi nhấn Button thứ hai, SHOW ANDROID.SUPPORT.V7.APP.ALERTDIALOG:

s3

 

 

Nhận Xét

Khi tôi nhấn Button thứ nhất, ứng dụng sẽ gọi AlertDialog trong thư viện framework (android.app) nằm trong hệ thống Android. Do đó nó sẽ hiển thị Dialog mặc định của HỆ THỐNG theo theme mặc định của hệ thống, cụ thể hơn là theme Holo, do đây là theme hệ thống mặc định của dòng Android 4.X, từ 4.0 Ice Cream Sandwich tới 4.4.4 KitKat. Đối với Android 2.3, Dialog mặc định kiểu “xấu ơi là xấu” của hệ thống sẽ được gọi.

Khi tôi nhấn Button thứ hai, ứng dụng sẽ gọi AlertDialog trong thư viện support (android.support.v7.app) nằm nội bộ trong ứng dụng (APK). Do đó nó sẽ hiển thị Dialog mặc định của ỨNG DỤNG theo theme mặc định của ứng dụng, cụ thể hơn là theme AppCompat (lưu ý, không phải theme Material) mang giao diện hơi hướng Material Design (giả giao diện Material), không phụ thuộc phiên bản Android của thiết bị là bao nhiêu.

Trong bài viết tiếp theo, tôi sẽ so sánh thêm về hai loại thư viện này để giúp bạn linh hoạt hơn trong việc lựa chọn thư viện để tối ưu hóa ứng dụng Android của mình.

2 thoughts on “Thư viện framework và thư viện support trong Android (Bài 1).”

  1. Cám ơn bạn, cả 3 bài viết về support library rất hay. Bài viết giúp mình hiểu rõ hơn về support library. 😀

    1. Cảm ơn bạn. Hiện tại Android Support Lib đã chuyển thành AndroidX nên sắp tới mình sẽ có bài viết mới về bộ thư viện này. Mong bạn sẽ tiếp tục ủng hộ EitGuide trong thời gian sắp tới.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.