Android - Hoạt động
Một hoạt động đại diện cho một màn hình duy nhất với giao diện người dùng giống như cửa sổ hoặc khung của Java. Hoạt động Android là lớp con của lớp ContextThemeWrapper.
Nếu bạn đã làm việc với ngôn ngữ lập trình C, C ++ hoặc Java thì bạn hẳn đã thấy rằng chương trình của bạn bắt đầu từ main()chức năng. Theo cách tương tự, hệ thống Android khởi chạy chương trình của mình bằngActivitybắt đầu với một cuộc gọi trên phương thức gọi lại onCreate () . Có một chuỗi các phương thức gọi lại để khởi động một hoạt động và một chuỗi các phương thức gọi lại chia nhỏ một hoạt động như được hiển thị trong biểu đồ vòng đời Hoạt động bên dưới: ( hình ảnh lịch sự: android.com )
Lớp Activity định nghĩa các sự kiện gọi lại sau đây. Bạn không cần phải triển khai 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 cái và triển khai những cái đó để đảm bảo ứng dụng của bạn hoạt động theo cách mà người dùng mong đợi.
Sr.No | Gọi lại & Mô tả |
---|---|
1 | onCreate() Đây là lần gọi lại đầu tiên và được gọi khi hoạt động được tạo lần đầu tiên. |
2 | onStart() Lệnh gọi lại này được gọi khi người dùng hiển thị hoạt độ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() Hoạt động bị tạm dừng không nhận được thông tin đầu vào của người dùng và không thể thực thi 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() Cuộc gọi lại này được gọi khi hoạt động không còn hiển thị nữa. |
6 | onDestroy() Lệnh gọi lại này được gọi trước khi hoạt động bị phá hủy bởi hệ thống. |
7 | onRestart() Cuộc gọi lại này được gọi khi hoạt động khởi động lại sau khi dừng nó. |
Thí dụ
Ví dụ này sẽ hướng dẫn bạn qua các bước đơn giản để hiển thị vòng đời hoạt động ứng dụng Android. Làm theo các bước sau để sửa đổi ứng dụng Android mà chúng tôi đã tạo trong chương Ví dụ về Hello World -
Bươc | Sự miêu 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 trong một gói com.example.helloworld như được giải thích trong chương Ví dụ về 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ữ phần còn lại của các tệp không thay đổi. |
3 | Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của các 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 được sửa đổi src/com.example.helloworld/MainActivity.java. Tệp này bao gồm từng phương pháp cơ bản của vòng đời. CácLog.d() phương pháp đã được sử dụng để tạo thông báo nhật ký -
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 hoạt động tải tất cả thành phần giao diện người dùng bằng cách sử dụng tệp XML có sẵn trong thư mục res / layout của dự án. Câu lệnh sau tải các thành phần giao diện người dùng 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 hoạt động mà không có bất kỳ hạn chế nào. Mọi hoạt động bạn xác định cho ứng dụng của mình phải được khai báo trong tệp AndroidManifest.xml và hoạt động chính cho ứng dụng của bạn phải được khai báo trong tệp kê khai bằng một <intent-filter> bao gồm hành động CHÍNH và danh mục LAUNCHER 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 hành động CHÍNH hoặc danh mục LAUNCHER không được khai báo cho một trong các hoạt động của bạn, 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!ứng dụng chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo raAVDtrong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào
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
Chúng ta hãy 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 thông báo sự kiện sau trong LogCat window trong android studio:
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 để chúng tôi một lần nữa thử mở khóa 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 trong LogCat window trong Android studio:
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, chúng ta hãy thử nhấp lại vào nút Quay lại
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