Saturday, November 23, 2019

Tìm hiểu Activity trong Android

Một Activity Android biểu thị 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 Activity Java Android là lớp con của lớp ContextThemeWrapper.
Trong android, Activity đại diện cho một màn hình duy nhất với giao diện người dùng (UI) của một ứng dụng và nó sẽ đóng vai trò là một điểm vào để người dùng tương tác với một ứng dụng.

Nói chung, các ứng dụng android sẽ chứa nhiều màn hình và mỗi màn hình của ứng dụng của chúng tôi sẽ là một phần mở rộng của lớp Hoạt động. Bằng cách sử dụng các hoạt động, chúng tôi có thể đặt tất cả các thành phần giao diện người dùng ứng dụng Android của mình trong một màn hình duy nhất.
Từ nhiều hoạt động trong ứng dụng android, một hoạt động có thể được đánh dấu là hoạt động chính và đó là màn hình đầu tiên xuất hiện khi chúng tôi khởi chạy ứng dụng. Trong ứng dụng android, mỗi hoạt động có thể bắt đầu một hoạt động khác để thực hiện các hành động khác nhau dựa trên yêu cầu của chúng tôi.

Ví dụ: một ứng dụng danh bạ đang có nhiều hoạt động, trong đó màn hình hoạt động chính sẽ hiển thị danh sách các liên hệ và từ màn hình hoạt động chính, chúng tôi có thể khởi chạy các hoạt động khác cung cấp màn hình để thực hiện các tác vụ như thêm một liên hệ mới và tìm kiếm liên lạc. Tất cả các hoạt động này trong ứng dụng liên hệ có liên kết lỏng lẻo với các hoạt động khác nhưng sẽ hoạt động cùng nhau để mang lại trải nghiệm người dùng tốt hơn.

Nói chung, trong Android cơ bản có một sự phụ thuộc tối thiểu giữa các hoạt động trong một ứng dụng. Để sử dụng các hoạt động trong ứng dụng, chúng tôi cần đăng ký thông tin hoạt động đó trong tệp kê khai của ứng dụng ( AndroidMainfest.xml ) và cần quản lý vòng đời hoạt động đúng cách.
Để sử dụng các hoạt động trong ứng dụng của mình, chúng ta cần xác định một hoạt động với các thuộc tính bắt buộc trong tệp kê khai ( AndroidMainfest.xml ) như hình dưới đây
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 phải thấy rằng chương trình của bạn bắt đầu từ hàm main () . Rất giống với cách này, hệ thống Android khởi tạo chương trình của nó bằng một Activity bắt đầu bằng 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 phá bỏ một hoạt động như trong sơ đồ vòng đời Activity dưới đây
Vòng đời hoạt động của Android


Lớp Activity định nghĩa các cuộc gọi trở lại tức là các sự kiện. Bạn không cần phải 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 người 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 người dùng mong đợi.
onCreate ()
Đây là cuộc gọi lại đầu tiên và được gọi khi hoạt động được tạo lần đầu tiên.
onstart()
Cuộc gọi lại này được gọi khi hoạt động hiển thị cho người dùng.
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.
onPause ()
Hoạt động bị tạm dừng không nhận được đầ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.
onstop()
Cuộc gọi lại này được gọi khi hoạt động không còn hiển thị.
onDestroy ()
Cuộc gọi lại này được gọi trước khi hoạt động bị phá hủy bởi hệ thống.
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ẽ đưa bạn qua các bước đơn giản để hiển thị vòng đời hoạt động của ứng dụng Android. Thực hiện theo các bước sau để sửa đổi ứng dụng Android
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 tin này bao gồm mỗi phương pháp vòng đời cơ bản. Phương thức Log.d () đã được sử dụng để tạo thông điệp tường trình -
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ả 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 của dự án. Câu lệnh sau 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 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 với <bộ lọc ý định> bao gồm danh mục hành động MAIN và 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>

No comments:

Post a Comment