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ư cửa sổ hoặc khung của Java. Android activity là lớp con của lớp ContextThemeWrapper.
Nếu bạn đã làm việc với C, C + + hoặc ngôn ngữ lập trình Java thì bạn sẽ thấy chương trình của bạn bắt đầu từ hàm main (). Tương tự như vậy, hệ thống Android khởi tạo chương trình bằng Activity bắt đầu với việc gọi lại phương thức onCreate (). Có một chuỗi các phương thức được gọi lại để bắt đầu một activity và một chuỗi các phương thức được gọi lại để làm thoát một activity như trong sơ đồ vòng đời activity dưới đây:
Lớp Activity xác định các cuộc gọi sau khi thực hiện sự kiện. Bạn không cần thực hiện tất cả các phương thức gọi lại. Tuy nhiên, điều quan trọng là bạn phải hiểu từng chiến dịch và thực hiện những điều đảm bảo ứng dụng của bạn hoạt động theo cách mà người dùng mong đợi.
STT | Phương thức gọi lại và mô tả |
---|---|
1 | onCreate()
Đây là lần gọi lại đầu tiên và được gọi khi Activity được tạo lần đầu tiên. |
2 | onStart()
Được gọi khi Activity hiển thị lên cho người dùng. |
3 | onResume()
Điều này được gọi khi người dùng bắt đầu tương tác với ứng dụng. |
4 | onPause()
Activity tạm dừng không nhận được đầu vào của người dùng, không thể thực hiện bất kỳ mã nào và được gọi khi hoạt động hiện tại đang bị tạm dừng và hoạt động trước đó đang được tiếp tục. |
5 | onStop()
Được gọi khi Activity không còn hiển thị nữa. |
6 | onDestroy()
Được gọi trước khi hoạt động bị hủy bởi hệ thống. |
7 | onRestart()
Được gọi khi hoạt động khởi động lại sau khi dừng nó. |
Ví dụ:
Ví dụ này sẽ đưa bạn qua các bước đơn giản để hiển thị vòng đời Activity của ứng dụng Android. Thực hiện theo các bước sau để sửa đổi ứng dụng Android mà chúng tôi đã tạo trong ví dụ Hello World –
Bước | Mô tả |
---|---|
1 | Bạn sẽ sử dụng Android studio để tạo một ứng dụng Android và đặt tên nó là HelloWorld dưới một gói com.example.helloworld như đã được giải thích trong chương trình Hello World. |
2 | Sửa đổi tệp hoạt động chính MainActivity.java như được giải thích bên dưới. Giữ nguyên các phần còn lại của các tập tin . |
3 | Chạy ứng dụng để khởi chạy bộ giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng. |
Sau đây là nội dung của tệp hoạt động chính đã sửa đổi src/com.example.helloworld/MainActivity.java. Tập tin này bao gồm các phương thức cơ bản. Phương thức Log.d() đã được sử dụng để tạo ra các thông điệp tường trình –
package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** Called when the activity is about to become visible. */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** Called when the activity has become visible. */ @Override protected void onResume() { super.onResume(); Log.d(msg, "The onResume() event"); } /** Called when another activity is taking focus. */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** Called when the activity is no longer visible. */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** Called just before the activity is destroyed. */ @Override public void onDestroy() { super.onDestroy(); Log.d(msg, "The onDestroy() event"); } }
Một lớp Activity tải tất cả các thành phần UI bằng cách sử dụng tệp XML có sẵn trong thư mục res/layout dự án. Câu lệnh sau đây tải các thành phần UI từ tệp res/layout/activity_main.xml :
setContentView(R.layout.activity_main);
Một ứng dụng có thể có một hoặc nhiều activity mà không có bất kỳ hạn chế. Mọi activity bạn xác định cho ứng dụng phải được khai báo trong tệp AndroidManifest.xml và activity chính cho ứng dụng phải được khai báo trong tệp kê khai với <intent-filter> bao gồm danh mục ACT và LAUNCHER chính như sau:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.tutorialspoint7.myapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Nếu một trong hai hoạt động MAIN hay LAUNCHER không được khai báo thì biểu tượng ứng dụng của bạn sẽ không xuất hiện trong danh sách ứng dụng của Màn hình chính
Hãy thử chạy Hello World của chúng tôi đã sửa đổi! Tôi cho rằng bạn đã tạo ra AVD của bạn trong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, mở một trong các tệp hoạt động của dự án và nhấp vào Run Eclipse Run Icon biểu tượng từ thanh công cụ. Android studio cài đặt ứng dụng trên AVD của bạn và bắt đầu nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng, nó sẽ hiển thị cửa sổ Emulator và bạn sẽ thấy các tin nhắn đăng nhập sau ở cửa sổ LogCat –
08-23 10:32:07.682 4480-4480/com.example.helloworld D/Android :: The onCreate() event 08-23 10:32:07.683 4480-4480/com.example.helloworld D/Android :: The onStart() event 08-23 10:32:07.685 4480-4480/com.example.helloworld D/Android :: The onResume() event
Hãy để chúng tôi thử nhấp vào nút màn hình khóa trên trình giả lập Android và nó sẽ tạo ra các sự kiện sự kiện sau trong cửa sổ LogCat :
08-23 10:32:53.230 4480-4480/com.example.helloworld D/Android :: The onPause() event 08-23 10:32:53.294 4480-4480/com.example.helloworld D/Android :: The onStop() event
Hãy cho chúng tôi một lần nữa thử mở màn hình của bạn trên trình giả lập Android và nó sẽ tạo ra các thông báo sự kiện sau đây trong cửa sổ LogCat:
08-23 10:34:41.390 4480-4480/com.example.helloworld D/Android :: The onStart() event 08-23 10:34:41.392 4480-4480/com.example.helloworld D/Android :: The onResume() event
Tiếp theo hãy nhấn thử nút trên trình giả lập android và nó sẽ tạo ra các thông báo sự kiện sau đây trong cửa sổ LogCat:
08-23 10:37:24.806 4480-4480/com.example.helloworld D/Android :: The onPause() event 08-23 10:37:25.668 4480-4480/com.example.helloworld D/Android :: The onStop() event 08-23 10:37:25.669 4480-4480/com.example.helloworld D/Android :: The onDestroy() event
Chúc bạn thành công!