Lập trình Android, Series lập trình Android cơ bản

Bài 4: Activity là gì? Vòng đời của một Activity (Lập trình Android cơ bản)

Lập trình android cơ bản

Trong lập trình Android, một Activity là gì ?

Một activity đại diện cho một màn hình đơn với một giao diện người dùng giống như window hay frame của Java. Android activity là một lớp con của lớp ContextThemeWrapper.

Nếu bạn đã từng làm việc với các ngôn ngữ lập trình như C, C++ hay Java thì bạn phải thấy rằng chương trình của bạn sẽ bắt đầu từ main() function. Nói một cách đơn giản, Hệ thống Android khởi tạo chương trình của nó với một Activity bắt đầu với một lời gọi đến onCreate() callback method. Có một trình tự các callback method sẽ bắt đầu một activity và một trình tự các callback method sẽ huỷ một activity được mô tả bằng sơ đồ vòng đời của Activity (Activity life cycle) dưới đây:

Lớp Activity định nghĩa các callback dưới đây như là các sự kiện. Bạn không cần phải triển khai toàn bộ các callbacks methods. Tuy nhiên, việc bạn hiểu mỗi callback và triển khai chúng để đảm bảo ứng dụng vận hành tốt theo cách người dùng mong đợi là rất quan trọng.

Callback và mô tả
1onCreate()
Đây là callback đầu tiên và được gọi khi activity được tạo lần đầu.
2onStart()
Đây là callback được gọi khi activity trở nên có thể nhìn thấy bởi người dùng.
3onResume()
Nó được gọi khi người dùng bắt đầu tương tác với ứng dụng.
4onPause()
Activity tạm dừng không nhận đầu vào từ người dùng và không thể thực thi bất kỳ dòng code nào. Nó được gọi khi activity hiện tại đang bị tạm dừng và activity trước đó đang được hồi phục.
5onStop()
Callback này được gọi khi activity không còn được nhìn thấy.
6onDestroy()
Callback này được gọi khi activity đã bị phá huỷ bởi hệ thống.
7onRestart()
Callback này được gọi khi activity bắt đầu lại sau khi nó bị tạm dừng trước đó.

Ví dụ

Ví dụ này sẽ cho các bạn một cái nhìn trực quan với các bước đơn giản để hiện thị các callback đại diện cho vòng đời của một activity trong ứng dụng.

Bước 1: Bạn tạo một ứng dụng mới tương tự như cách tạo chương trình “Hello world” ở bài 2.

Bước 2: Ở file MainActivity.java chúng ta thêm các callback của MainActivity trong MainActivity class. Sử dụng Log.d() method để tạo các thông báo log:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    // Được gọi đầu tiên và gọi khi activity lần đầu được khởi tạo
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, "onCreate ");
    }

    // Được gọi khi activity trở nên có thể nhìn thấy bởi người dùng
    @Override
    protected void onStart() {
        super.onStart();

        Log.d(TAG, "onStart ");
    }

    // Được gọi khi người dùng bắt đầu tương tác với ứng dụng
    @Override
    protected void onResume() {
        super.onResume();

        Log.d(TAG, "onResume ");
    }

    // Được gọi khi một activity khác đang được focus
    @Override
    protected void onPause() {
        super.onPause();

        Log.d(TAG, "onPause ");
    }

    // được gọi khi activity không còn được nhìn thấy
    @Override
    protected void onStop() {
        super.onStop();

        Log.d(TAG, "onStop ");
    }

    // được gọi khi activity đã bị phá huỷ bởi hệ thống
    @Override
    protected void onDestroy() {
        super.onDestroy();

        Log.d(TAG, "onDestroy ");
    }

    // Được gọi khi activity bắt đầu lại sau khi nó bị tạm dừng trước đó
    @Override
    protected void onRestart() {
        super.onRestart();

        Log.d(TAG, "onRestart ");
    }
}

Bước 3: Chạy ứng dụng trên thiết bị thật hoặc máy ảo vào quan sát phần Logcat của Android Studio theo từng trường hợp:

Trường hợp 1: Lúc ứng dụng mới được khởi động:

2019-06-05 19:12:34.802 4655-4655/net.techchicken.myapplication D/MainActivity: onCreate 
2019-06-05 19:12:34.805 4655-4655/net.techchicken.myapplication D/MainActivity: onStart 
2019-06-05 19:12:34.826 4655-4655/net.techchicken.myapplication D/MainActivity: onResume 

Trường hợp 2: Lúc ấn nút back:

2019-06-05 19:13:04.717 4655-4655/net.techchicken.myapplication D/MainActivity: onPause
2019-06-05 19:13:05.246 4655-4655/net.techchicken.myapplication D/MainActivity: onStop
2019-06-05 19:13:05.251 4655-4655/net.techchicken.myapplication D/MainActivity: onDestroy 

Trường hợp 3: Lúc ấn nút home:

2019-06-05 19:13:55.307 4655-4655/net.techchicken.myapplication D/MainActivity: onPause
2019-06-05 19:13:55.317 4655-4655/net.techchicken.myapplication D/MainActivity: onStop 

Trường hợp 4: Lúc vào lại ứng dụng bằng trình đa nhiệm:

2019-06-05 19:16:08.992 5011-5011/net.techchicken.myapplication D/MainActivity: onRestart 
2019-06-05 19:16:08.995 5011-5011/net.techchicken.myapplication D/MainActivity: onStart 
2019-06-05 19:16:08.996 5011-5011/net.techchicken.myapplication D/MainActivity: onResume 
Được gắn thẻ , ,

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *