Bài viết được sự cho phép của tác giả Trần Hữu Cương
Giới thiệu lớp Activity trong Android
Lớp Activity là thành phần quan trọng nhất của ứng dụng Android, cách mà chúng hoạt động tạo thành nền tảng cơ bản của mô hình lập trình ứng dụng.
Khi một Activity chỉ định là Activity chính, nó sẽ là màn hình đầu tiên khi khởi chạy ứng dụng. Một Activity này lại có thể gọi và kích hoạt một Activity khác.
Activity chịu trách nhiệm chuyển giao sự kiện cho các view trong nó và quản lý vòng đời của nó. Một ứng dụng Android có thể có một hoặc nhiều Activity.
Một class được gọi là Activity khi nó extend (kế thừa) từ những class cha như : AppCompatActivity, Activity, FragmentActivity
Tuyển dụng lập trình viên android các vị trí
Các giai đoạn trong vòng đời của Android Activity
Để tạo một Activity thì bạn phải tạo ra một lớp kế thừa lớp Activity, sau đó triển khai tối thiểu phương thức onCreate(Bundle savedInstanceState), sau đó tùy ngữ cảnh mà khi Activity hoạt động vòng đời của nó diễn ra như mô tả ở hình sau:
- onCreate(Bundle savedInstanceState): Được gọi khi hoạt động mới được tạo, tại đây khởi tạo các biến, nạp giao diện layout …, phương thức này cũng nhận dữ liệu lưu lại trạng thái hoạt động trước đó (với mục đích để phục hồi – savedInstanceState).
- onStart(): Được gọi ngay trước khi Activity hiển thị trên màn hình.
- onResume(): Được gọi ngay khi Activity bắt đầu có thể tương tác với người dùng, và Activity nằm trên cùng trong danh sách các Activity của hệ thống.
- onPause(): Được gọi khi hệ thống sắp kích hoạt một Activity khác, nếu bạn quá tải phương thức này, thường để lưu lại dữ liệu thật nhanh để hệ thống còn kích hoạt Activity khác.
- onStop(): Được gọi khi nó bị ẩn đi. Sau phương thức này, Activity có thể gọi onRestart() nếu nó được người dùng kích hoạt lại hoặc gọi onDestroy() để hết thúc.
- onDestroy(): gọi khi Activity bị hủy hoàn toàn (ví dụ gọi finish(), hoặc người dùng kill Activity)
Trong vòng đời của ứng dụng Android bạn cần phân biệt 2 loại sau: Visible Lifetime và Foreground Lifetime
- Visible Lifetime: xảy ra từ sau khi gọi onStart –> cho tới lúc gọi onStop : trong trường hợp này ta vẫn có thể thấy màn hình Activity
- Foreground Lifetime: xảy ra từ khi gọi onResume –> cho tới lúc gọi onPause : trong suốt thời gian này Activity luôn nằm ở trên cùng và ta có thể tương tác được với nó
Demo
Trên đây chúng ta đi cùng nhau tìm hiểu lý thuyết. Tiếp theo sẽ đi vào phần thực hành để cùng hiểu vòng đời trong Android là cái gì. Ví dụ:
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e(TAG, "onCreate: "); findViewById(R.id.btn_nav).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(MainActivity.this, OtherActivity.class)); } }); } @Override protected void onStart() { super.onStart(); Log.e(TAG, "onStart: "); } @Override protected void onRestart() { super.onRestart(); Log.e(TAG, "onRestart: "); } @Override protected void onResume() { super.onResume(); Log.e(TAG, "onResume: "); } @Override protected void onPause() { super.onPause(); Log.e(TAG, "onPause: "); } @Override protected void onStop() { super.onStop(); Log.e(TAG, "onStop: "); } @Override protected void onDestroy() { super.onDestroy(); Log.e(TAG, "onDestroy: "); } }
Giờ các bạn chạy logcat để xem kết quả.
Từ khi kích hoạt ứng dụng, đến khi xuất hiện giao diện để tương tác xảy ra các sự kiện
onCreate onStart onResume
Khi ứng dụng đang chạy, quay ngang màn hình thấy xảy ra một loạt sự kiện như sau:
onPause onStop onDestroy onCreate onStart onResume
Hy vọng bài hôm nay sẽ giúp các bạn hiểu rõ hơn về vòng đời của Activity.
Bài viết gốc được đăng tải tại codecute.com
Có thể bạn quan tâm:
- 10 điều mọi nhà phát triển ứng dụng Android nên biết về kiến trúc Architecture
- Xác định đối tượng giao diện UI trong ứng dụng Android
- Tuyển dụng hiệu quả trên facebook với 8 tuyệt chiêu tối ưu
Xem thêm tìm việc lập trình viên hấp dẫn trên TopDev