Các thành phần chính trong ứng dụng android?

CácComponentlà các khối kiến trúc nền tảng tạo nên một ứng dụng Android. Những Component này được ghép bởi AndroidManifest.xml, miêu tả mỗi thành phần và cách chúng tương tác với nhau.

Có 4 Component chính có thể được sử dụng bên trong một ứng dụng Android:

Thành phầnMiêu tả
ActivityChúng điều khiển UI và xử lý tương tác người dùng trên màn hình smartphone
ServiceChúng xử lý các tiến trình background được gắn kết với một ứng dụng
BroadcastReceiverChúng xử lý giao tiếp giữa Android OS và các ứng dụng
ContentProviderChúng xử lý dữ liệu và quản lý cơ sở dữ liệu

Activity trong Android

MộtActivitybiểu diễn một màn hình với một giao diện UI. Nói đơn giản, Activity thực hiện các hành động trên màn hình. Ví dụ, một ứng dụng email có thể thực hiện một activityhiển thị một danh sách các email mới, activity khác để soạn thảo một email, và activity khác để đọc email. Nếu một ứng dụng có nhiều hơn một activity, thì một trong số chúng sẽ được đánh dấu như là activity mà sẽ được hiển thị khi ứng dụng chạy.

Một activity được triển khai như là một lớp con của lớpAppCompatActivitycó dạngnhư sau:

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

Service trong Android

Mộtservicelà một Component chạy trong Background để thực hiện các hoạt động. Ví dụ, một service có thể chơi nhạc nền trong khi người dùng đangtrong một ứng dụng khác, hoặc nó có thể lấy dữ liệu qua mạng mà không cần chặn tương tác người dùng với một activity.

Một service được triển khai như là một lớp con của lớp Service, như sau:

public class MyService extends Service { }

BroadcastReceivertrong Android

Về cơ bản,BroadcastReceiverphản hồi các thông điệp từ ứng dụng khác hoặc từ hệ thống. Ví dụ, các ứng dụng cũng có thể khởi tạo các broadcast để báo cho các ứng dụng khác biết rằng có một số dữ liệu đã được tải về thiết bị và nó là có sẵn cho các ứng dụng này để sử dụng chúng. Vì thế, BroadcastReceiver sẽ thông dịch thông tin này và sẽ khởi tạo hành động thích hợp.

Một BroadcastReceiver được triển khai như là một lớp con của BroadcastReceiver và mỗi thông điệp được truyền như là một đối tượng Intent.

public class MyReceiver extends BroadcastReceiver { public void onReceive(context, intent) { } }

ContentProvidertrong Android

Thành phầnContentProvidercung cấp dữ liệu từ một ứng dụng tới các ứng dụng khác tùy theo yêu cầu. Những yêu cầu này được xử lý bởi các phương thức của lớp ContentResolver. Dữ liệu có thể được lưu trữ trong hệ thống file, cơ sở dữ liệu hoặc bất cứ đâu.

Một contentprovider được triển khai như là một lớp con của lớp ContentProvider và phải triển khai một APIs chuẩn đểcho phép các ứng dụng khác thực hiện các transaction.

public class MyContentProvider extends ContentProvider { public void onCreate() { } }

Một số Component khác trong Android

Ngoài ra, còn có một số Component khác sẽ được sử dụng trong xây dựng các thực thể, tính logic của chúng và kết nối chúng với nhau. Chúng bao gồm:

ComponentMiêu tả
FragmentBiểu diễn một phần của giao diện UI trong một Activity
ViewCác phần tử giao diện UI mà được vẽ trên màn hình bao gồmbutton,list, form, …
LayoutCấu trúc thứ bậc của view để điều khiển định dạng màn hình và bề mặt của các view
IntentCác thành phần kết nối các thông báo với nhau
ResourceCác phần tử ngoại vi, như các chuỗi, hằng, và hình ảnh có thể vẽ
ManifestChính là Configuration file cho ứng dụng

Ở bài trước chúng ta đã được tìm hiểu về cách debug (gỡ lỗi) chương trình Android bằng Android Studio. Thật ra là cũng chỉ sơ lược được về các lỗi thường gặp và cách xử lý chung nhất mà thôi, còn trong quá trình làm việc sẽ có vô số lỗi mà mình không thể tổng quát hết.

Mà thôi, lần này chúng ta sang bài học mới. Trước khi sang bài mới, đề nghị các bạn chuẩn bị kiểm tra miệng... à quên, kiểm tra mắt: Ở phần kết luận trong bài HƯỚNG DẪN DEBUG CƠ BẢN mình có đề cập đến việc tại sao nút khai báo ở ví dụ phần 2 (gỡ bug) lại không hiển thị.

Vậy thì hôm nay chúng ta sẽ giải quyết nó. Quẫy thôi!

Nội dung

Để có thể thực hành bài này trôi chảy, các bạn cần phải nắm chắc:

  • HƯỚNG DẪN DEBUG CƠ BẢN

Ngoài ra ở bài này các bạn sẽ được biết về:

  • Các loại "View".
  • Phân biệt giữa "View" và "ViewGroup"
  • Drawable.
  • Themes.
  • Cách lắp các View vào màn hình.

View

View là gì? View đơn giản là một thành phần hiển thị trên màn hình.

  •  Một cái nút (Button) là một View.

Các thành phần chính trong ứng dụng android?

  • Một cái thanh kéo (SeekBar) cũng là một “View”:

Các thành phần chính trong ứng dụng android?

Vậy chúng ta có thể phán chắc nịch luôn: Cái gì hiển thị trên màn hình thì nó là View.

Trong Android có rất nhiều loại View, phù hợp nhiều nhu cầu. Bản thân lập trình viên cũng có thể tự tạo ra view của riêng mình bằng cách code các lớp Java extends từ lớp View. Tí nữa ở cuối bài biết đâu sẽ có ví dụ, hí hí.

 Một số loại View tiêu biểu là (mình lấy ví dụ ở bản Android 6.0 mới):

  • TextView: Hiển thị chữ. Có thể thay đổi nội dung chữ, màu sắc, kích cỡ, kiểu đậm/gạch chân,…
  • Button: Nút. Có thể thay đổi độ rộng, cao, màu nền nút, kiểu viền, đổ bóng,…

Các thành phần chính trong ứng dụng android?

  • Switch: Công tắc. Có 2 chế độ gạt qua gạt lại như chơi điện tử, nhưng mà chỉ trái-phải thôi.

Các thành phần chính trong ứng dụng android?

  • EditText: Trường nhập văn bản. Là một ô nhập văn bản. Văn bản ở EditText có thể là 1 hay nhiều dòng, có thể cài đặt đầu vào chỉ được nhập số, nhập chữ hay nhập dạng mật khẩu.

Các thành phần chính trong ứng dụng android?

  • SeekBar: Thanh kéo. Sử dụng khi người dùng muốn thao tác gì đó về biên độ / độ lớn bằng tay.

  

Các thành phần chính trong ứng dụng android?

Các View có những thuộc tính khác nhau, gọi là các attributes.

Ví dụ như EditText thì có attributes là maxLength (số ký tự tối đa) và maxLines (số dòng tối đa). TextView thì có fontSize (cỡ chữ) và inputType (kiểu nhập: số / chữ / email,…).

 Tuy nhiên các View đều có một số attributes chung như: 

  • Layout_width: Độ dài chiều ngang của View. Có thể là con số cụ thể hoặc là wrap_content (Bao đủ nội dung bên trong thì thôi), hay match_parent (bằng với chiều ngang của View chứa nó).
  • Layout_height: Độ dài chiều dọc của View. Có thể là con số cụ thể hoặc là wrap_content (Bao đủ nội dung bên trong thì thôi), hay match_parent (bằng với chiều dọc của View chứa nó).
  • ID: Cái này rất quan trọng, mỗi một View trong một layout đều được gắn với một định danh (id) này để gắn chức năng với code Java ở trong. Sẽ được đề cập kỹ hơn ở phần sau.

ViewGroup    

Về bản chất, Viewgroup cũng là một View (Extends từ class View), nhưng cái khác là nó có thể chứa được các View khác bên trong. 

Các ViewGroup thường sử dụng: 

LinearLayout

Quá nổi tiếng, được sử dụng rất nhiều. Các View con cấp 1 trong Layout này sẽ được sắp xếp chỉ theo 1 hướng: Dọc hoặc ngang (Vertical / Horizontal), chỉ định bằng thuộc tính android:orientation.

Ví dụ: