Activity trong Android là gì

Các giai đoạn trong vòng đời của Android Activity

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

Để 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:

Activity trong Android là gì

  • 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)

Activity trong Android là gì

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.

2020-10-11 928 lượt xem

hùng đẹp trai

đọc dữ liệu hộ bố

tôi thích vậy đó

hùng ebudezain

hùng đẹp trai

Activity trong Android là gì?

hùng ebudezain

đọc dữ liệu hộ bố

Activity trong Android được xem là một màn hình tương tác trong ứng dụng Android. 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 (LifeCycle) của nó. Một ứng dụng Android có thể có một hoặc nhiều Activity. Và những Activity này có vòng đời độc lập với nhau và được duy trì trong Activity BackStack.

đọc dữ liệu hộ bố

tôi thích vậy đó

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng thông minh lắm

hùng thông minh lắm

Vòng đời của Activity

hùng đẹp trai

tôi thích vậy đó

hùng thông minh lắm

hùng đẹp trai

hùng đẹp trai

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

Trước tiên chúng ta sẽ cùng nhau tìm hiểu vòng đời của Activity sau đó sẽ đi đến phần thực hành để hiểu rõ hơn.

đọc dữ liệu hộ bố

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng đẹp trai

ahihi đồ ngốc trương thanh hùng nè

hùng đẹp trai

đọc dữ liệu hộ bố

Sơ đồ mô tả vòng đời của ứng dụng Android.

hùng ebudezain

Activity trong Android là gì

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

1. onCreate()

đọc dữ liệu hộ bố

tôi thích vậy đó

tôi thích vậy đó

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…

tôi thích vậy đó

2. onStart()

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng thông minh lắm

ahihi đồ ngốc trương thanh hùng nè

hùng đẹp trai

tôi thích vậy đó

hùng thông minh lắm

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

3. onResume()

hùng thông minh lắm

hùng ebudezain

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.

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

4. onPause()

hùng đẹp trai

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

ahihi đồ ngốc trương thanh hùng nè

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng ebudezain

hùng đẹp trai

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng thông minh lắm

tôi thích vậy đó

ahihi đồ ngốc trương thanh hùng nè

5. onStop()

hùng thông minh lắm

hùng ebudezain

đọc dữ liệu hộ bố

đọc dữ liệu hộ bố

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

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.

hùng đẹp trai

hùng thông minh lắm

tôi thích vậy đó

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

6. onRestart()

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng ebudezain

tôi thích vậy đó

ahihi đồ ngốc trương thanh hùng nè

đọc dữ liệu hộ bố

bài viết được viết bởi trương thanh hùng https://ebudezain.com/

hùng đẹp trai

ahihi đồ ngốc trương thanh hùng nè

Phương thức callback này gọi khi activity đã stoped, gọi trước khi bắt đầu start lại Activity.

hùng ebudezain

ahihi đồ ngốc trương thanh hùng nè

7. onDestroy()

ahihi đồ ngốc trương thanh hùng nè

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.

public class MainActivity extends AppCompatActivity { private final String TAG = getClass().getSimpleName(); private Button btn_login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e(TAG, "onCreate: "); setContentView(R.layout.activity_main); btn_login = (Button)findViewById(R.id.btn_login); btn_login.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, LoginActivity.class); Log.d(TAG, "onClick: " + LoginActivity.class); startActivity(intent); } }); } @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: "); } }