Wednesday, February 1, 2017

[Android] Một số thành phần chính trong lập trình android


Hôm nay, mình sẽ giới thiệu đến các thành phần chính của một ứng dụng Android.

  1. Activity: Là thành phần tối quan trọng trong Android. Được xem là một màn hình tương tác với người dùng. Một activity sẽ chưa một file giao diện để chứa fragment hay view khác
  2. Service: Là thành phần chạy nền với ứng dụng và trong suốt với người dùng nhằm thực hiện một công việc nào đó. VD: Chơi nhạc, cảnh báo, cập nhật dữ liệu, gọi service…
  3. Broadcast Reveiver: Là thành phần luôn chạy ngầm trong hệ thống android với mục đích thu nhập thông tin từ hệ điều hành hay từ ứng dụng. VD: Bắt một sms gửi đến, % pin, có cuộc gọi…
  4. Content provider: cho phép tập trung dữ liệu ở một nơi và các ứng dụng khác nhau sẽ truy xuất vào nó khi cần thiết. 
I. Về Activity:
  • Activity BackStack tuân theo quy tắc LIFO (Last In First Out) như hình vẽ:

  • Vòng đời (lifecycle) của một Activity:
  1. onCreate(): Phương thức callback này được gọi khi ứng dụng mới start, nhưng chưa có thể tương tác với người dùng. Ở trong phương thức này chúng ta thường sử dụng để setContentView(), khởi tạo cái view, inflate view từ xml đăng kí event cho view, khởi tạo Adapter cho ListView, RecyclerView…
  2. onStart(): Phương thức callback này được gọi ngay sau khi onCreate() được gọi. Ở phương thức này chúng ta vẫn chưa tương tác được với người dùng trên UI.
  3. onResume(): Phương thức này được gọi ngay sau khi onStart() được gọi. Ở phương thức này chúng ta có thể tương tác được với UI.
  4. onPause(): Phương thức callback này được sử dụng khá phổ biến trong vòng đời của Activity. Chúng ta thường lưu lại trạng thái của các biến trong method này.
  5. onStop(): Phương thức callback này có thể được gọi ngay sau khi phương thức onPause được gọi. Phương thức này được gọi khi chúng ta nhấn nút home app.
  6. onRestart(): Phương thức callback này gọi khi activity đã stoped, gọi trước khi bắt đầu start lại Activity.
  7. onDestroy(): Phương thức này đợc gọi khi chúng ta nhấn back từ activity, hoặc call method finish() của activity.

II. Về Fragment: 

  • Là một phần giao diện người dùng. Được đặt trong activity. 
  • Cho phép thiết kế linh hoạt, có tính tái sử dụng cao, kết hợp nhiều fragment để thiết kế một giao diện. 
  • Tương tự như Activity, fragment cũng có vòng đời, các sự kiện đầu vào và có thể thêm hoặc gỡ bỏ trong quá trình runtime.











III. Service: 
  1. Một dịch vụ (Service) là một thành phần chạy ngầm bên trên hệ điều hành để thực hiện các hoạt động dài hạn mà không cần phải tương tác với người sử dụng và nó hoạt động ngay cả khi ứng dụng bị phá hủy.
IV. Broadcast Reveiver:
  1. Broadcast Receiver phản hồi các thông báo phát ra từ các ứng dụng khác hoặc từ chính hệ thống. Những thông báo này đôi khi được gọi là các event hoặc intent. Ví dụ, các ứng dụng cũng có thể khởi tạo các tín hiệu broadcast để thông báo cho ứng dụng khác biết rằng một số dữ liệu đã được về tới thiết vị và là có sẵn cho chúng để sử dụng, vì thế Broadcast Receiver thông dịch thông tin đó và khởi tạo hành động thích hợp.
  2. Ví dụ:
  • Trạng thái của Wifi, Bluetooth.
  • Có tin nhắn sms, gọi điện
  • Máy đã khởi động xong
  • Trạng thái màn hình của điện thoại



V. Content provider
  1. Content providers là thành phần cung cấp dữ liệu từ một ứng dụng đến một ứng dụng khác dựa trên các Request. Mỗi Request được xử lý bằng các phương thức của class ContentResolver. Một Content Provider có thể sử dụng các cách lưu trữ dữ liệu khác nhau, dữ liệu có thể được lưu trữ trong databases, file,  hoặc thông qua Network.
  2. Content Providers cho phép bạn tập trung dữ liệu ở một nơi và các ứng dụng khác nhau sẽ truy xuất vào nó khi cần thiết. Content Provider hoạt động rất giống với một cơ sở dữ liệu, và bạn có thể truy vấn nó, chỉnh sửa nội dung, cũng như là thêm xóa các nội dung sử dụng các phương thức: insert(), update(), delete(), query().
VI. Một số các thành phần khác:
  1. Toast: Là kiểu hiển thị thông báo lên trên màn hình trong một khoảng thời thời gian ngắn.
  2. Dialog: Là một hộp thoại hiển thị cho phép người dùng thực hiện một công việc, nhiệm vụ. Dùng trong các trường hợp cần show confirm hoặc chọn một giá trị nào đó.
  3. Widget: Là một tiện ích nhỏ thường được đặt trên home screen. Nó rất tiện dụng bởi nó cho phép người dùng đặt các ứng dụng yêu thích của họ lên home screen và truy cập sử dụng chúng một cách nhanh chóng. Ví dụ như các widget tồn tại sẵn như widget về music, thời tiết, đồng hồ, báo thức,....
  4. Notification: Hiện thị một thông báo từ ứng dụng lên trình thông báo của điện thoại. Nó sẽ không tự mất như Toast mà người dùng phải tự thực hiện action hoặc xóa để notification mất đi
  5. Intent: Một Intent trong Android là một miêu tả trừu tượng của một hoạt động để được thực hiện. Nó có thể được sử dụng với startActivity để chạy một Activity, broadcastIntent để gửi nó tới bất kỳ thành phần BroadcastReceiver nào quan tâm đến, và với startService(Intent)hoặc bindService(Intent, ServiceConnection, int) để giao tiếp với một Service ở Background.
  6. Intent – Filter: IntentFilter là thành phần giúp cho hệ thống Android biết được ứng dụng của bạn có thể làm được những gì.
  7. Manifest: Mỗi ứng dụng đều cần có AndroidManifest.xml để mô tả những thông tin quan trọng của nó cho hệ thống Android. File này sẽ khai báo ứng dụng cần quyền gì, có những activity nào, chạy service gì, có khai báo Broadcast nào không….
  8. Listview: là một extends của ViewGroup. Dùng để hiển thị một danh sách các Elements.
  9. RecycleView: về chức năng thì tương tự như ListView giúp tùy biến cách hiển thị dẽ dàng hơn, sử dụng ViewHolder Design Pattern để tái sử dụng tài nguyên…
  10. Viewpaper: Sử dụng Gesture thực hiện khi người dùng thực hiện xong thao tác.
  11. Adapter: Là một đối tượng đóng vai trò như cầu nối giữa AdapterView và dữ liệu thật
  12. LinearLayout, RelativeLayout: Là một extends của ViewGroup, dùng để chứa các view khác. Với Linear các View sẽ được sắp xếp theo 1 chiều ngang hoặc dọc với các tỉ lệ xác định.
  13. Toolbar, ActionBar: Thanh tiêu đề của ứng dụng Android cho phép chúng ta thao tác nhanh, tiện lợi hơn.
Hy vọng với bài viết này, các bạn có thể nắm được các thành phần của một ứng dụng android. Mọi ý kiến các bạn để lại comment nhé.