Tính năng Instant Run
Là tính năng trong Android Studio cho phép chúng ta cập nhật sự thay đổi trong các đoạn mã hay tài nguyên của dự án trong khi ứng dụng dự án đang chạy trên thiết bị hay máy ảo. Có 3 mức thay đổi từ Instant Run:
- Hot Swap: Mức độ cập nhật này xuất hiện khi một phương thức tồn tại sẵn thay đổi.
- Warm Swap: Mức độ này xuất hiện khi có sự thay đổi trong tập tin tài nguyên (các tập tin trong thư mục res).
- Cold Swap: Mức độ này xuất hiện khi cấu trúc mã thay đổi ví dụ thêm phương thức mới, thay đổi định nghĩa phương thức có sẵn hay thay đổi cấu trúc lớp.
Không phải tất cả các thay đổi từ dự án đều có thể được cập nhật bởi Instant Run, cụ thể:
- Thay đổi trong app manifest
- Thay đổi trong các tài nguyên tham chiếu đến app manifest
- Thay đổi các thành phần UI widget Android
Tắt/mở tính năng Instant Run
Trong Android Studio (trong bài viết này là Android Studio 3.4) có thể mở hay tắt tính năng Instant Run bằng cách vào mục File > Settings. Trong hộp thoại Settings chọn Instant Run tại mục Build, Execution, Deployment và chọn hay không chọn checkbox đầu tiên (Enable Instant Run to…):
Sử dụng tính năng Instant Run
Để sử dụng tính năng Instant Run chúng ta dùng nút Apply Changes là nút có biểu tượng hình tia chớp gần với nút Run. Khi ứng dụng chưa thực thi, biểu tượng nút Apply Changes sẽ mờ đi
Khi ứng dụng thực thi, biểu tượng Apply Changes sẽ có màu vàng
Ứng dụng minh họa sử dụng Instant Run
Bài viết này sử dụng Android Studio 3.4 và sẽ tạo một ứng dụng minh họa tên InstantRunDemo với API 23: Android 6.0 (Marshmallow), hai tập tin mặc định là MainActivity.java và activity_main.xml. Nội dung của MainActivity.java:
package com.ngocminhtran.intantrundemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
Nội dung của activity_main.xml là:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
Bây giờ thực thi ứng dụng InstantRunDemo (và để ý nút Apply Changes), giao diện trông như sau:
Kiểm tra các mức Instant Run như sau:
- Hot swap: Vẫn để ứng dụng thực thi, tìm đến phương thức onCreate của lớp MainActivity trong tập tin MainActivity.java và xóa ( hay che mờ) phương thức setContentView() và nhấn nút Apply Changes, ứng dụng sẽ thông báo Applied changes, restarted activity
Chúng ta cũng nhận một thông báo ở phía dưới Android Studio:
Vì phương thức setContentView không còn hiệu lực nên toàn bộ nội dung trên giao diện (Main Activity) sẽ biến mất. Nếu nhấn nút Apply Changes lần nữa, tức là không thay đổi gì, sẽ xuất hiện một thông báo phía dưới:
Muốn nội dung xuất hiện trở lại chỉ cần dùng lại phương thức setContentView và nhấn nút Apply Changes.
- Warm swap: Vẫn để ứng dụng thực thi, tìm đến tập tin activity_main.xml ở chế độ Text và thay đổi nội dung thuộc tính Text của TextView từ Hello World! thành I am Ngoc Minh Tran:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I am Ngoc Minh Tran!" .../>
Nhấn nút Apply Changes và xem kết quả:
- Cold swap: Vẫn để ứng thực thi và tìm đến lớp MainActivity trong tập tin MainActivity.java. Thêm một phương thức tên TestMethod() đến lớp này:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void TestMethod(){} }
Nhấn nút Apply Changes thì ứng dụng sẽ khởi động lại và một thông báo xuất hiện phía dưới Android Studio:
Như vậy, chúng ta đã hoàn thành việc minh họa các mức thay đổi Hot, Warm và Cold của chức năng Instant Run trong Android Studio.
Ý kiến bài viết