Giám sát hiệu suất của đợt triển khai tính năng

1. Tổng quan

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách theo dõi hiệu suất của ứng dụng trong quá trình ra mắt tính năng. Ứng dụng mẫu của chúng ta sẽ có chức năng cơ bản và ứng dụng này được thiết lập để hiển thị một hình nền khác dựa trên cờ Cấu hình từ xa Firebase. Chúng ta sẽ xem xét các dấu vết đo lường để giám sát hiệu suất của ứng dụng, triển khai thay đổi cấu hình cho ứng dụng, theo dõi tác động và xem cách cải thiện hiệu suất.

Kiến thức bạn sẽ học được

  • Cách thêm tính năng Giám sát hiệu suất Firebase vào ứng dụng di động của bạn để khai thác các chỉ số có thể sử dụng (như thời gian khởi động ứng dụng và khung hình chậm hoặc bị treo)
  • Cách thêm dấu vết tuỳ chỉnh để hiểu các đường dẫn mã quan trọng trong hành trình của người dùng
  • Cách sử dụng trang tổng quan Giám sát hiệu suất để hiểu rõ các chỉ số của bạn và theo dõi các thay đổi quan trọng, chẳng hạn như việc triển khai một tính năng
  • Cách thiết lập cảnh báo về hiệu suất để theo dõi các chỉ số chính
  • Cách triển khai thay đổi Cấu hình từ xa Firebase

Điều kiện tiên quyết

  • Android Studio 4.0 trở lên
  • Trình mô phỏng Android có API cấp 16 trở lên.
  • Phiên bản Java 8 trở lên
  • Hiểu biết cơ bản về Cấu hình từ xa Firebase

2. Thiết lập dự án mẫu

Tải đoạn mã

Chạy lệnh sau để sao chép mã mẫu cho lớp học lập trình này. Thao tác này sẽ tạo một thư mục có tên codelab-perf-rc-android trên máy của bạn:

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

Nếu không có Git trên máy của mình, bạn cũng có thể tải mã trực tiếp xuống từ GitHub.

Nhập dự án trong thư mục firebase-perf-rc-android-start vào Android Studio. Có thể bạn sẽ thấy một số ngoại lệ đối với thời gian chạy hoặc cảnh báo về việc thiếu tệp google-services.json. Chúng tôi sẽ khắc phục vấn đề này trong phần tiếp theo.

Trong lớp học lập trình này, bạn sẽ sử dụng trình bổ trợ Trợ lý Firebase để đăng ký ứng dụng Android với một dự án Firebase và thêm các tệp cấu hình, trình bổ trợ và phần phụ thuộc cần thiết của Firebase vào dự án Android – tất cả đều có trong Android Studio!

Kết nối ứng dụng với Firebase

  1. Chuyển đến Android Studio/Trợ giúp > Kiểm tra bản cập nhật để đảm bảo rằng bạn đang sử dụng phiên bản Android Studio và Trợ lý Firebase mới nhất.
  2. Chọn Tools (Công cụ) > Firebase để mở ngăn Assistant (Trợ lý).

c0e42ef063d21eab.png.

  1. Chọn Giám sát hiệu suất để thêm vào ứng dụng của bạn, sau đó nhấp vào Bắt đầu sử dụng Giám sát hiệu suất.
  2. Nhấp vào Kết nối với Firebase để kết nối dự án Android của bạn với Firebase (thao tác này sẽ mở bảng điều khiển của Firebase trong trình duyệt của bạn).
  3. Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án, sau đó nhập tên dự án Firebase (nếu đã có dự án Firebase, bạn có thể chọn dự án hiện có). Nhấp vào Tiếp tục và chấp nhận các điều khoản để tạo dự án Firebase và một Ứng dụng Firebase mới.

Tiếp theo, bạn sẽ thấy một hộp thoại để Kết nối ứng dụng Firebase mới với dự án Android Studio.

51a549ebde2fe57a.pngS

  1. Nhấp vào Kết nối.
  2. Mở Android Studio Trong ngăn Assistant (Trợ lý), bạn sẽ thấy thông báo xác nhận rằng ứng dụng của mình đã kết nối với Firebase.

40c24c4a56a45990.pngS

Thêm tính năng Giám sát hiệu suất vào ứng dụng

Trong ngăn Assistant (Trợ lý) trong Android Studio, hãy nhấp vào Add Performance Monitoring to your app (Thêm giám sát hiệu suất vào ứng dụng).

Bạn sẽ thấy một hộp thoại Accept Changes (Chấp nhận các thay đổi), sau đó Android Studio sẽ đồng bộ hoá ứng dụng của bạn để đảm bảo đã thêm tất cả phần phụ thuộc cần thiết.

3046f3e1f5fea06f.pngS

Cuối cùng, bạn sẽ thấy thông báo thành công trong ngăn Assistant (Trợ lý) trong Android Studio cho biết rằng tất cả các phần phụ thuộc đều được thiết lập đúng cách.

62e79fd18780e320.pngS

Bạn có thể bật tính năng ghi nhật ký gỡ lỗi bằng cách làm theo hướng dẫn trong bước "(Không bắt buộc) Bật tính năng ghi nhật ký gỡ lỗi". Hướng dẫn tương tự cũng có trong tài liệu công khai.

3. Chạy ứng dụng

Bây giờ, bạn sẽ thấy tệp google-services.json trong thư mục mô-đun (cấp ứng dụng) của ứng dụng và ứng dụng của bạn bây giờ sẽ biên dịch. Trong Android Studio, hãy nhấp vào Run (Chạy) > Chạy "ứng dụng" để tạo và chạy ứng dụng trên trình mô phỏng Android.

Khi ứng dụng đang chạy, trước tiên, bạn sẽ thấy một màn hình chờ như sau:

ffbd413a6983b205.pngs

Sau đó, sau vài giây, trang chính có hình ảnh mặc định sẽ hiển thị:

d946cab0df319e50.pngs

Chuyện gì đang xảy ra?

Màn hình chờ được triển khai trong SplashScreenActivity và có những đặc điểm sau:

  1. Trong onCreate(), chúng ta sẽ khởi chạy chế độ cài đặt Cấu hình từ xa Firebase và tìm nạp các giá trị cấu hình mà bạn sẽ thiết lập trong trang tổng quan Cấu hình từ xa trong phần sau của lớp học lập trình này.
  2. Trong executeTasksBasedOnRC(), chúng ta đọc giá trị cấu hình của cờ seasonal_image_url. Nếu URL được cung cấp bởi giá trị config, chúng tôi sẽ tải hình ảnh xuống một cách đồng bộ.
  3. Sau khi quá trình tải xuống hoàn tất, ứng dụng sẽ chuyển đến MainActivity và gọi finish() để kết thúc SplashScreenActivity.

Trong MainActivity, nếu seasonal_image_url được xác định thông qua Cấu hình từ xa, tính năng này sẽ được bật và hình ảnh đã tải xuống sẽ hiển thị làm nền của trang chính. Nếu không, hình ảnh mặc định (như hình trên) sẽ được hiển thị.

4. Thiết lập Cấu hình từ xa

Hiện ứng dụng của bạn đang chạy, bạn có thể thiết lập cờ tính năng mới.

  1. Trong bảng điều khiển bên trái của bảng điều khiển của Firebase, hãy tìm mục Tương tác, sau đó nhấp vào Cấu hình từ xa.
  2. Nhấp vào nút Create configuration (Tạo cấu hình) để mở biểu mẫu cấu hình và thêm seasonal_image_url làm khoá thông số.
  3. Nhấp vào Thêm nội dung mô tả rồi nhập nội dung mô tả sau: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. Nhấp vào Thêm mới -> Giá trị có điều kiện -> Tạo điều kiện mới.
  5. Đối với tên điều kiện, hãy nhập Seasonal image rollout.
  6. Đối với phần Applies if..., hãy chọn User in random percentile <= 0%. (Bạn muốn tắt tính năng này cho đến khi sẵn sàng ra mắt ở bước sau.)
  7. Nhấp vào Tạo điều kiện. Bạn sẽ sử dụng điều kiện này vào lúc khác để ra mắt tính năng mới cho người dùng.

7a07526eb9e81623.pngS

  1. Mở Tạo biểu mẫu thông số đầu tiên, rồi tìm trường Giá trị cho việc phát hành hình ảnh theo mùa. Nhập URL sẽ tải hình ảnh theo mùa xuống: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. Hãy để trống giá trị mặc định. Điều này có nghĩa là hình ảnh mặc định trong cơ sở mã sẽ được hiển thị thay vì hình ảnh được tải xuống từ URL.
  3. Nhấp vào Lưu.

99e6cd2ebcdced.png.

Bạn sẽ thấy cấu hình mới được tạo dưới dạng bản nháp.

  1. Nhấp vào Xuất bản các thay đổi rồi xác nhận nội dung thay đổi ở trên cùng để cập nhật ứng dụng.

39cd3e96d370c7ce.png.

5. Thêm tính năng theo dõi thời gian tải dữ liệu

Ứng dụng của bạn sẽ tải trước một số dữ liệu trước khi hiển thị MainActivity và hiện màn hình chờ để ẩn quy trình này. Bạn không muốn người dùng phải chờ quá lâu trên màn hình này, vì vậy, thông thường, bạn nên theo dõi thời gian hiển thị màn hình chờ.

Tính năng Giám sát hiệu suất Firebase cung cấp cho bạn một giải pháp để làm được điều đó. Bạn có thể đo lường dấu vết mã tuỳ chỉnh để giám sát hiệu suất của mã cụ thể trong ứng dụng của mình – chẳng hạn như thời gian tải dữ liệu và thời gian xử lý của tính năng mới.

Để theo dõi thời gian hiển thị màn hình chờ, bạn sẽ thêm một dấu vết mã tuỳ chỉnh vào SplashScreenActivity, đây là Activity triển khai màn hình chờ.

  1. Khởi động, tạo và bắt đầu một dấu vết mã tuỳ chỉnh có tên là splash_screen_trace:

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. Kết thúc dấu vết trong phương thức onDestroy() của SplashScreenActivity:

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

Vì tính năng mới này sẽ tải xuống và xử lý một hình ảnh, nên bạn sẽ thêm một dấu vết mã tuỳ chỉnh thứ hai để theo dõi thời gian bổ sung mà tính năng của bạn thêm vào SplashScreenActivity.

  1. Khởi động, tạo và bắt đầu một dấu vết mã tuỳ chỉnh có tên là splash_seasonal_image_processing:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. Kết thúc dấu vết trong cả phương thức onLoadFailed()onResourceReady() của RequestListener:

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

Bây giờ, bạn đã thêm dấu vết mã tuỳ chỉnh để theo dõi thời lượng màn hình chờ (splash_screen_trace) và thời gian xử lý của tính năng mới (splash_seasonal_image_processing), hãy chạy lại ứng dụng trong Android Studio. Bạn sẽ thấy một thông báo ghi nhật ký chứa Logging trace metric: splash_screen_trace, theo sau là thời lượng của dấu vết. Bạn sẽ không thấy thông điệp nhật ký cho splash_seasonal_image_processing vì bạn chưa bật tính năng mới.

6. Thêm thuộc tính tuỳ chỉnh vào dấu vết

Đối với các dấu vết mã tuỳ chỉnh, tính năng Giám sát hiệu suất sẽ tự động ghi lại các thuộc tính mặc định (siêu dữ liệu phổ biến như phiên bản ứng dụng, quốc gia, thiết bị, v.v.) để bạn có thể lọc dữ liệu cho dấu vết trong bảng điều khiển của Firebase. Bạn cũng có thể thêm và theo dõi các thuộc tính tuỳ chỉnh.

Trong ứng dụng, bạn vừa thêm 2 dấu vết mã tuỳ chỉnh để theo dõi thời lượng màn hình chờ và thời gian xử lý của tính năng mới. Một yếu tố có thể ảnh hưởng đến các thời lượng này là liệu hình ảnh được hiển thị là hình ảnh mặc định hay hình ảnh phải được tải xuống từ một URL. Ai cũng biết – có thể cuối cùng bạn sẽ có các URL khác nhau để tải hình ảnh xuống.

Vì vậy, hãy thêm một thuộc tính tuỳ chỉnh đại diện cho URL hình ảnh theo mùa vào các dấu vết mã tuỳ chỉnh này. Bằng cách đó, bạn có thể lọc dữ liệu thời lượng theo các giá trị này sau này.

  1. Thêm thuộc tính tuỳ chỉnh (seasonal_image_url_attribute) cho splash_screen_trace ở đầu phương thức executeTasksBasedOnRC:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. Thêm cùng một thuộc tính tuỳ chỉnh cho splash_seasonal_image_processing ngay sau lệnh gọi startTrace("splash_seasonal_image_processing"):

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

Bây giờ, bạn đã thêm thuộc tính tuỳ chỉnh (seasonal_image_url_attribute) cho cả hai dấu vết tuỳ chỉnh (splash_screen_tracesplash_seasonal_image_processing), hãy chạy lại ứng dụng trong Android Studio. Bạn sẽ thấy thông báo ghi nhật ký có chứa Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'.. Bạn chưa bật thông số Cấu hình từ xa seasonalImageUrl. Do đó, giá trị thuộc tính là unset.

SDK giám sát hiệu suất sẽ thu thập dữ liệu theo dõi và gửi chúng đến Firebase. Bạn có thể xem dữ liệu trong trang tổng quan Hiệu suất của bảng điều khiển của Firebase. Chúng tôi sẽ giải thích chi tiết về điều này trong bước tiếp theo của lớp học lập trình này.

7. Định cấu hình trang tổng quan Giám sát hiệu suất

Định cấu hình trang tổng quan để giám sát tính năng của bạn

Trong bảng điều khiển của Firebase, hãy chọn dự án có ứng dụng friendly Eats của bạn.

Trong bảng điều khiển bên trái, hãy tìm nút Phát hành & Giám sát, sau đó nhấp vào Hiệu suất.

Bạn sẽ thấy trang tổng quan Hiệu suất cùng với các điểm dữ liệu đầu tiên trên bảng chỉ số! SDK giám sát hiệu suất thu thập dữ liệu hiệu suất từ ứng dụng của bạn và hiển thị dữ liệu đó trong vòng vài phút sau khi thu thập.

f57e5450b70034c9.png.

Bảng chỉ số này là nơi bạn có thể theo dõi các chỉ số chính cho ứng dụng của mình. Chế độ xem mặc định bao gồm thời lượng của dấu vết thời gian bắt đầu ứng dụng, nhưng bạn có thể thêm những chỉ số mà mình quan tâm nhất. Vì đang theo dõi tính năng mới mà bạn đã thêm, nên bạn có thể điều chỉnh trang tổng quan để hiển thị thời lượng của dấu vết mã tuỳ chỉnh splash_screen_trace.

  1. Nhấp vào một trong các hộp Chọn chỉ số trống.
  2. Trong cửa sổ hộp thoại, hãy chọn loại dấu vết là Custom trace (Dấu vết tuỳ chỉnh) và tên dấu vết là splash_screen_trace.

1fb81f4dba3220e0.pngs

  1. Nhấp vào Chọn chỉ số, bạn sẽ thấy khoảng thời gian của splash_screen_trace được thêm vào trang tổng quan!

Bạn có thể làm theo các bước này để thêm những chỉ số khác mà bạn quan tâm, nhờ đó có thể nhanh chóng nắm bắt sự thay đổi về hiệu suất của những chỉ số đó theo thời gian, thậm chí cả trên các bản phát hành khác nhau.

1d465c021e58da3b.png.

Bảng chỉ số là một công cụ mạnh mẽ giúp theo dõi hiệu suất của các chỉ số chính mà người dùng của bạn trải nghiệm. Đối với lớp học lập trình này, bạn có một tập dữ liệu nhỏ trong một khoảng thời gian hẹp. Vì vậy, bạn sẽ sử dụng các chế độ xem trang tổng quan khác để nắm được hiệu suất của việc triển khai tính năng.

8. Triển khai tính năng

Bây giờ, sau khi thiết lập xong tính năng giám sát, bạn đã sẵn sàng triển khai thay đổi về Cấu hình từ xa Firebase (seasonal_image_url) mà bạn đã thiết lập trước đó.

Để triển khai thay đổi, bạn sẽ quay lại trang Cấu hình từ xa trong bảng điều khiển của Firebase để tăng tỷ lệ phần trăm người dùng trong điều kiện nhắm mục tiêu của bạn. Thông thường, bạn sẽ triển khai các tính năng mới cho một nhóm nhỏ người dùng và chỉ tăng hạn mức khi bạn tự tin rằng không có vấn đề gì với bản phát hành đó. Tuy nhiên, trong lớp học lập trình này, bạn là người dùng duy nhất của ứng dụng này, nên bạn có thể thay đổi phân vị thành 100%.

  1. Nhấp vào thẻ Điều kiện ở đầu trang.
  2. Nhấp vào điều kiện Seasonal image rollout mà bạn đã thêm trước đó.
  3. Thay đổi phân vị thành 100%.
  4. Nhấp vào Lưu điều kiện.
  5. Nhấp vào Xuất bản các thay đổi rồi xác nhận nội dung thay đổi.

70f993502b27e7a0.pngS

Quay lại Android Studio, hãy khởi động lại ứng dụng trong trình mô phỏng để xem tính năng mới. Sau màn hình chờ, bạn sẽ thấy màn hình chính có trạng thái trống mới!

b0cc91b6e48fb842.png.

9. Kiểm tra các thay đổi về hiệu suất

Bây giờ, hãy xem hiệu suất tải màn hình chờ bằng cách sử dụng trang tổng quan Hiệu suất trong bảng điều khiển của Firebase. Trong bước này của lớp học lập trình, bạn sẽ sử dụng nhiều phần của trang tổng quan để xem dữ liệu hiệu suất.

  1. Trên thẻ chính của Trang tổng quan, hãy di chuyển xuống bảng dấu vết, sau đó nhấp vào thẻ Dấu vết tuỳ chỉnh. Trong bảng này, bạn sẽ thấy các dấu vết mã tùy chỉnh mà bạn đã thêm trước đó cùng với một số dấu vết có sẵn.
  2. Giờ đây, khi bạn đã bật tính năng mới, hãy tìm dấu vết mã tuỳ chỉnh splash_seasonal_image_processing. Dấu vết mã này đo thời gian cần để tải xuống và xử lý hình ảnh. Từ giá trị Duration của dấu vết, bạn có thể thấy rằng việc tải xuống và xử lý này mất một khoảng thời gian đáng kể.

439adc3ec71805b7.pngs

  1. Vì bạn có dữ liệu về splash_seasonal_image_processing, nên bạn có thể thêm thời lượng của dấu vết này vào bảng chỉ số ở đầu thẻ Trang tổng quan.

Tương tự như trước, hãy nhấp vào một trong các hộp trống Chọn chỉ số. Trong cửa sổ hộp thoại, hãy chọn loại dấu vết là Custom trace (Dấu vết tuỳ chỉnh) và tên dấu vết là splash_seasonal_image_processing. Cuối cùng, hãy nhấp vào Chọn chỉ số để thêm chỉ số này vào bảng chỉ số.

7fb64d2340410576.pngS

  1. Để xác nhận rõ hơn sự khác biệt, bạn có thể xem xét kỹ hơn dữ liệu về splash_screen_trace. Nhấp vào thẻ splash_screen_trace trong bảng chỉ số, rồi nhấp vào Xem chi tiết về chỉ số.

b1c275c30679062a.png.

  1. Trong trang chi tiết, bạn sẽ thấy danh sách các thuộc tính ở dưới cùng bên trái, bao gồm cả thuộc tính tuỳ chỉnh mà bạn đã tạo trước đó. Nhấp vào thuộc tính tuỳ chỉnh seasonal_image_url_attribute để xem thời lượng màn hình chờ cho từng URL hình ảnh theo mùa ở bên phải:

8fa1a69019bb045e.png.

  1. Giá trị thời lượng màn hình chờ có thể sẽ khác một chút so với các giá trị trong ảnh chụp màn hình ở trên. Tuy nhiên, bạn nên sử dụng thời lượng dài hơn khi tải hình ảnh xuống từ một URL thay vì sử dụng hình ảnh mặc định (được biểu thị bằng "chưa đặt").

Trong lớp học lập trình này, có thể lý do dẫn đến việc này lâu hơn, nhưng trong một ứng dụng thực tế, điều này có thể không rõ ràng đến vậy. Dữ liệu về thời lượng được thu thập sẽ đến từ nhiều thiết bị, chạy ứng dụng trong nhiều điều kiện kết nối mạng và những điều kiện này có thể tệ hơn mong đợi của bạn. Hãy cùng xem cách bạn điều tra vấn đề này nếu đây là tình huống thực tế.

  1. Nhấp vào Hiệu suất ở đầu trang để quay lại thẻ chính của Trang tổng quan: 640b696b79d90103.pngS
  2. Trong bảng theo dõi ở cuối trang, hãy nhấp vào thẻ Yêu cầu mạng. Trong bảng này, bạn sẽ thấy tất cả các yêu cầu mạng từ ứng dụng của mình đều được tổng hợp thành các mẫu URL, bao gồm cả mẫu URL images.unsplash.com/**. Nếu so sánh giá trị của thời gian phản hồi này với tổng thời gian cần thiết để tải xuống và xử lý hình ảnh (tức là thời lượng của dấu vết splash_seasonal_image_processing), thì bạn có thể thấy rằng một lượng lớn thời gian được dành cho việc tải xuống hình ảnh.

6f92ce0f23494507.pngS

Kết quả về hiệu suất

Khi sử dụng tính năng Giám sát hiệu suất của Firebase, bạn nhận thấy tác động sau đây đối với người dùng cuối khi bật tính năng mới này:

  1. Thời gian sử dụng SplashScreenActivity đã tăng lên.
  2. Thời lượng của splash_seasonal_image_processing rất lớn.
  3. Sự chậm trễ này là do thời gian phản hồi đối với việc tải hình ảnh xuống và thời gian xử lý tương ứng cần thiết cho hình ảnh.

Trong bước tiếp theo, bạn sẽ giảm thiểu tác động đến hiệu suất bằng cách khôi phục tính năng này và xác định cách bạn có thể cải thiện việc triển khai tính năng này.

10. Khôi phục tính năng này

Tăng số lượng người dùng thời gian chờ trên màn hình chờ. Một trong những lợi ích chính của Cấu hình từ xa là khả năng tạm dừng và đảo ngược quá trình phát hành mà không phải phát hành một phiên bản khác cho người dùng. Điều này cho phép bạn nhanh chóng phản ứng với các vấn đề (như vấn đề về hiệu suất mà bạn phát hiện được trong bước cuối cùng) và giảm thiểu số lượng người dùng không hài lòng.

Để giảm thiểu nhanh chóng, bạn sẽ đặt lại phân vị phát hành về 0 để tất cả người dùng của bạn sẽ thấy lại hình ảnh mặc định:

  1. Quay lại trang Cấu hình từ xa trong bảng điều khiển của Firebase.
  2. Nhấp vào Điều kiện ở đầu trang.
  3. Nhấp vào điều kiện Seasonal image rollout mà bạn đã thêm trước đó.
  4. Thay đổi phân vị thành 0%.
  5. Nhấp vào Lưu điều kiện.
  6. Nhấp vào Xuất bản các thay đổi rồi xác nhận nội dung thay đổi.

18c4f1cbac955a04.pngS

Khởi động lại ứng dụng trong Android Studio và bạn sẽ thấy màn hình chính trạng thái trống ban đầu:

d946cab0df319e50.pngs

11. Khắc phục các vấn đề về hiệu suất

Trong lớp học lập trình trước đó, bạn đã khám phá ra rằng việc tải hình ảnh xuống màn hình chờ khiến ứng dụng của bạn hoạt động chậm. Xem xét kỹ hơn hình ảnh đã tải xuống, bạn thấy rằng bạn đang sử dụng độ phân giải gốc của hình ảnh là hơn 2 MB! Một cách khắc phục nhanh cho vấn đề về hiệu suất là giảm chất lượng xuống độ phân giải phù hợp hơn để thời gian tải hình ảnh xuống ngắn hơn.

Triển khai lại giá trị Cấu hình từ xa

  1. Quay lại trang Cấu hình từ xa trong bảng điều khiển của Firebase.
  2. Nhấp vào biểu tượng Chỉnh sửa cho tham số seasonal_image_url.
  3. Cập nhật Giá trị cho việc phát hành hình ảnh theo mùa thành https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640, rồi nhấp vào Lưu.

828dd1951a2ec4a4.pngS

  1. Nhấp vào thẻ Điều kiện ở đầu trang.
  2. Nhấp vào Phát hành hình ảnh theo mùa, sau đó đặt lại phân vị thành 100%.
  3. Nhấp vào Lưu điều kiện.

1974fa3bb789f36c.png.

  1. Nhấp vào nút Xuất bản các thay đổi.

12. Kiểm thử bản sửa lỗi và thiết lập cảnh báo

Chạy ứng dụng trên máy

Khi giá trị cấu hình mới được đặt để sử dụng một URL hình ảnh tải xuống khác, hãy chạy lại ứng dụng. Lần này, bạn sẽ nhận thấy thời gian dành cho màn hình chờ ngắn hơn trước.

b0cc91b6e48fb842.png.

Xem hiệu suất của các thay đổi

Quay lại trang tổng quan về Hiệu suất trong bảng điều khiển của Firebase để xem các chỉ số này trông như thế nào.

  1. Lần này, bạn sẽ sử dụng bảng dấu vết để điều hướng đến trang chi tiết. Trong bảng dấu vết, trong thẻ Dấu vết tuỳ chỉnh, hãy nhấp vào dấu vết tuỳ chỉnh splash_seasonal_image_processing để xem lại chế độ xem chi tiết hơn về chỉ số thời lượng của chỉ số đó.

2d7aaca03112c062.pngS

  1. Nhấp vào thuộc tính tuỳ chỉnh seasonal_image_url_attribute để xem lại thông tin chi tiết về các thuộc tính tuỳ chỉnh. Nếu di chuột qua các URL này, bạn sẽ thấy một giá trị khớp với URL mới cho hình ảnh có kích thước giảm: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (với ?w=640 ở cuối). Giá trị thời lượng được liên kết với hình ảnh này ngắn hơn nhiều so với giá trị cho hình ảnh trước đó và có thể chấp nhận được đối với người dùng của bạn!

10e30c037a4237a2.pngS

  1. Giờ đây, bạn đã cải thiện hiệu suất của màn hình chờ, bạn có thể thiết lập cảnh báo để thông báo cho bạn khi dấu vết vượt quá ngưỡng bạn đã đặt. Mở trang tổng quan về Hiệu suất rồi nhấp vào biểu tượng trình đơn mục bổ sung (ba dấu chấm) cho splash_screen_trace rồi nhấp vào Cài đặt thông báo.

4bd0a2a1faa14479.pngS

  1. Nhấp vào nút bật/tắt để bật cảnh báo Thời lượng. Đặt giá trị ngưỡng cao hơn giá trị mà bạn đang thấy một chút để nếu splash_screen_trace của bạn vượt quá ngưỡng, bạn sẽ nhận được email.
  1. Nhấp vào Lưu để tạo thông báo của bạn. Cuộn xuống bảng dấu vết, sau đó nhấp vào thẻ Dấu vết tuỳ chỉnh để xem cảnh báo của bạn đã được bật chưa!

2bb93639e2218d1.png.

13. Xin chúc mừng!

Xin chúc mừng! Bạn đã bật SDK giám sát hiệu suất Firebase và thu thập dấu vết để đo lường hiệu suất của một tính năng mới! Bạn đã theo dõi các chỉ số chính về hiệu suất để triển khai một tính năng mới và đã phản ứng nhanh chóng khi phát hiện thấy một vấn đề về hiệu suất. Tất cả đều có thể thực hiện được nhờ thay đổi cấu hình bằng tính năng Cấu hình từ xa và theo dõi các vấn đề về hiệu suất theo thời gian thực.

Nội dung đã đề cập

  • Thêm SDK giám sát hiệu suất Firebase vào ứng dụng của bạn
  • Thêm dấu vết mã tuỳ chỉnh vào mã của bạn để đo lường một tính năng cụ thể
  • Thiết lập thông số Cấu hình từ xa và giá trị có điều kiện để kiểm soát/ra mắt một tính năng mới
  • Tìm hiểu cách sử dụng trang tổng quan theo dõi hiệu suất để xác định các vấn đề trong quá trình phát hành
  • Thiết lập cảnh báo về hiệu suất để thông báo cho bạn khi hiệu suất của ứng dụng vượt quá ngưỡng mà bạn đặt ra

Tìm hiểu thêm