Android 7.0 Nougat mang đến nhiều tính năng và chức năng mới cho người dùng cũng như nhà phát triển. Tài liệu này nêu bật những tính năng mới dành cho nhà phát triển.
Hãy nhớ xem Các thay đổi về hành vi của Android 7.0 để tìm hiểu những thay đổi của nền tảng có thể ảnh hưởng đến ứng dụng của bạn.
Để tìm hiểu thêm về các tính năng dành cho người tiêu dùng của Android 7.0, hãy truy cập vào www.android.com.
Hỗ trợ nhiều cửa sổ
Trên Android 7.0, chúng tôi sẽ ra mắt một tính năng đa nhiệm mới và được yêu cầu nhiều vào nền tảng này — hỗ trợ nhiều cửa sổ.
Giờ đây, người dùng có thể mở hai ứng dụng trên màn hình cùng một lúc.
- Trên điện thoại và máy tính bảng chạy Android 7.0, người dùng có thể chạy 2 ứng dụng cạnh nhau hoặc một ứng dụng chồng lên nhau ở chế độ chia đôi màn hình. Người dùng có thể đổi kích thước các ứng dụng bằng cách kéo đường phân chia giữa các ứng dụng.
- Trên thiết bị Android TV, các ứng dụng có thể tự đặt mình ở chế độ hình trong hình, cho phép ứng dụng tiếp tục hiện nội dung trong khi người dùng duyệt xem hoặc tương tác với các ứng dụng khác.
![Ứng dụng đang chạy trên thiết bị di động ở chế độ chia đôi màn hình](https://developer.android.com/static/images/android-7.0/mw-portrait.png?authuser=8&hl=vi)
Hình 1. Ứng dụng chạy ở chế độ chia đôi màn hình.
Đặc biệt là trên máy tính bảng và các thiết bị màn hình lớn khác, tính năng hỗ trợ nhiều cửa sổ mang đến cho bạn những cách mới để thu hút người dùng. Thậm chí, bạn còn có thể bật tính năng kéo và thả trong ứng dụng để cho phép người dùng kéo nội dung vào hoặc từ ứng dụng một cách thuận tiện — một cách tuyệt vời để nâng cao trải nghiệm người dùng.
Việc thêm tính năng hỗ trợ nhiều cửa sổ vào ứng dụng và định cấu hình cách xử lý chế độ hiển thị nhiều cửa sổ là rất đơn giản. Ví dụ: bạn có thể chỉ định các kích thước tối thiểu được cho phép của hoạt động để ngăn người dùng đổi kích thước của hoạt động bên dưới kích thước đó. Bạn cũng có thể tắt tính năng hiển thị nhiều cửa sổ cho ứng dụng để đảm bảo hệ thống chỉ hiển thị ứng dụng ở chế độ toàn màn hình.
Để biết thêm thông tin, hãy xem tài liệu dành cho nhà phát triển Hỗ trợ nhiều cửa sổ.
Cải tiến về thông báo
Trong Android 7.0, chúng tôi đã thiết kế lại thông báo để giúp bạn sử dụng dễ dàng và nhanh hơn. Một số thay đổi bao gồm:
- Cập nhật mẫu: Chúng tôi đang cập nhật các mẫu thông báo để làm nổi bật hình ảnh chính và hình đại diện. Nhà phát triển sẽ có thể tận dụng các mẫu mới mà chỉ cần điều chỉnh mã ở mức tối thiểu.
-
Tuỳ chỉnh kiểu nhắn tin: Bạn có thể tuỳ chỉnh thêm các nhãn giao diện người dùng liên kết với thông báo bằng cách sử dụng lớp
MessagingStyle
. Bạn có thể định cấu hình tin nhắn, tiêu đề cuộc trò chuyện và chế độ xem nội dung. - Thông báo theo gói: Hệ thống có thể nhóm các tin nhắn với nhau, chẳng hạn như theo chủ đề của tin nhắn và hiển thị nhóm. Người dùng có thể thực hiện các thao tác, chẳng hạn như Đóng hoặc Lưu trữ, đối với các thao tác đó. Nếu đã triển khai thông báo cho Android Wear, thì bạn đã quen thuộc với mô hình này.
- Trả lời trực tiếp: Đối với các ứng dụng giao tiếp theo thời gian thực, hệ thống Android hỗ trợ tính năng trả lời cùng dòng để người dùng có thể nhanh chóng trả lời tin nhắn SMS hoặc tin nhắn văn bản ngay trong giao diện thông báo.
- Khung hiển thị tuỳ chỉnh: Hai API mới cho phép bạn tận dụng các thành phần trang trí hệ thống (chẳng hạn như tiêu đề và thao tác thông báo) khi sử dụng khung hiển thị tuỳ chỉnh trong thông báo.
![Thiết bị di động đang hiển thị thông báo tin nhắn theo gói](https://developer.android.com/static/images/android-7.0/notifications-1.png?authuser=8&hl=vi)
![Thiết bị di động đang hiển thị thông báo về một tin nhắn](https://developer.android.com/static/images/android-7.0/notifications-3.png?authuser=8&hl=vi)
![Thiết bị di động hiển thị tin nhắn trả lời cùng dòng trong giao diện thông báo](https://developer.android.com/static/images/android-7.0/notifications-2.png?authuser=8&hl=vi)
Hình 2. Thông báo theo gói và trả lời trực tiếp.
Để tìm hiểu cách triển khai các tính năng mới, hãy xem hướng dẫn về Thông báo.
Biên dịch JIT/AOT theo hướng dẫn của hồ sơ
Trong Android 7.0, chúng tôi đã thêm một trình biên dịch Đúng thời điểm (JIT) có tính năng phân tích mã vào ART, nhờ đó, trình biên dịch này liên tục cải thiện hiệu suất của các ứng dụng Android khi các ứng dụng đó chạy. Trình biên dịch JIT hỗ trợ trình biên dịch Ahead of Time (AOT) hiện tại của ART và giúp cải thiện hiệu suất trong thời gian chạy, tiết kiệm dung lượng lưu trữ cũng như tăng tốc độ cập nhật ứng dụng và bản cập nhật hệ thống.
Tính năng biên dịch theo hướng dẫn của hồ sơ cho phép ART quản lý hoạt động biên dịch AOT/JIT cho từng ứng dụng theo cách sử dụng thực tế, cũng như các điều kiện trên thiết bị. Ví dụ: ART duy trì một hồ sơ gồm các phương thức nóng của từng ứng dụng, đồng thời có thể biên dịch trước và lưu các phương thức đó vào bộ nhớ đệm để có hiệu suất tốt nhất. Phương thức này giữ cho các phần khác của ứng dụng không được biên dịch cho đến khi chúng thực sự được sử dụng.
Bên cạnh việc cải thiện hiệu suất cho các phần chính của ứng dụng, tính năng biên dịch theo hướng dẫn của hồ sơ giúp giảm dung lượng RAM tổng thể của ứng dụng, bao gồm cả các tệp nhị phân liên quan. Tính năng này đặc biệt quan trọng trên các thiết bị có bộ nhớ thấp.
ART quản lý hoạt động biên dịch theo hướng dẫn của hồ sơ theo cách giảm thiểu mức tác động đến pin của thiết bị. Tính năng này chỉ thực hiện quá trình biên dịch trước khi thiết bị ở trạng thái rảnh và đang sạc, giúp tiết kiệm thời gian và pin bằng cách thực hiện trước công việc đó.
Đường dẫn nhanh để cài đặt ứng dụng
Một trong những lợi ích rõ ràng nhất của trình biên dịch JIT là tốc độ cài đặt ứng dụng và cập nhật hệ thống. Giờ đây, ngay cả những ứng dụng lớn cần vài phút để tối ưu hoá và cài đặt trong Android 6.0, bạn có thể cài đặt chỉ trong vài giây. Các bản cập nhật hệ thống cũng hoạt động nhanh hơn vì không còn bước tối ưu hoá nào nữa.
Chế độ nghỉ khi di chuyển...
Android 6.0 đã ra mắt Doze, một chế độ hệ thống giúp tiết kiệm pin bằng cách trì hoãn các hoạt động CPU và mạng của ứng dụng khi thiết bị ở trạng thái rảnh, chẳng hạn như khi thiết bị đang ở trên bàn hoặc trong ngăn.
Hiện có trong Android 7.0, chế độ Nghỉ tăng thêm một bước và tiết kiệm pin khi di chuyển. Bất cứ khi nào màn hình tắt trong một khoảng thời gian và thiết bị không cắm điện, Chế độ nghỉ sẽ áp dụng một số hạn chế quen thuộc về CPU và mạng cho ứng dụng. Điều này nghĩa là người dùng có thể tiết kiệm pin ngay cả khi mang thiết bị trong túi.
![Hình minh hoạ cách chế độ Nghỉ áp dụng mức hạn chế thứ nhất đối với hoạt động hệ thống để cải thiện thời lượng pin](https://developer.android.com/static/images/android-7.0/doze-diagram-1.png?authuser=8&hl=vi)
Hình 3. Giờ đây, chế độ Nghỉ sẽ áp dụng các hạn chế để cải thiện thời lượng pin ngay cả khi thiết bị không đứng yên.
Một thời gian ngắn sau khi màn hình tắt trong khi thiết bị đang chạy pin, Doze sẽ hạn chế quyền truy cập mạng, trì hoãn các công việc và đồng bộ hoá. Trong thời gian bảo trì ngắn, các ứng dụng được phép truy cập mạng và mọi công việc/lần đồng bộ hoá bị trì hoãn của chúng đều được thực thi. Bật màn hình hoặc cắm thiết bị vào chế độ Nghỉ sẽ đưa thiết bị ra khỏi chế độ Nghỉ.
Khi thiết bị đứng yên trở lại, khi màn hình tắt và bật pin trong một khoảng thời gian, Chế độ nghỉ sẽ áp dụng toàn bộ các giới hạn về CPU và mạng đối với chuông báo PowerManager.WakeLock
, AlarmManager
và quét GPS/Wi-Fi.
Các phương pháp hay nhất để điều chỉnh ứng dụng của bạn sang chế độ Nghỉ là như nhau cho dù thiết bị có di chuyển hay không. Vì vậy, nếu bạn đã cập nhật ứng dụng để xử lý chế độ Nghỉ một cách linh hoạt, thì bạn đã hoàn tất. Nếu chưa, hãy bắt đầu điều chỉnh ứng dụng của bạn sang chế độ Nghỉ ngay bây giờ.
Project Svelte: Tối ưu hoá nền
Project Svelte đang nỗ lực không ngừng để giảm thiểu mức sử dụng RAM của hệ thống và ứng dụng trên nhiều thiết bị Android trong hệ sinh thái. Trong Android 7.0, Project Svelte tập trung vào việc tối ưu hoá cách các ứng dụng chạy ở chế độ nền.
Xử lý trong nền là một phần thiết yếu trong hầu hết ứng dụng. Nếu được xử lý đúng cách, tính năng này có thể mang lại cho người dùng trải nghiệm tuyệt vời — tức thì, nhanh chóng và nhận biết theo bối cảnh. Khi không được xử lý đúng cách, tính năng xử lý nền có thể tốn RAM (và pin) một cách không cần thiết và ảnh hưởng đến hiệu suất hệ thống của các ứng dụng khác.
Kể từ Android 5.0, JobScheduler
là cách ưu tiên để thực hiện công việc ở chế độ nền theo cách có lợi cho người dùng. Các ứng dụng có thể lên lịch công việc trong khi cho phép hệ thống tối ưu hoá dựa trên bộ nhớ, nguồn điện và điều kiện kết nối. JobScheduler mang đến khả năng kiểm soát và tính đơn giản, đồng thời chúng tôi muốn mọi ứng dụng đều sử dụng được tính năng này.
Một lựa chọn hiệu quả khác là
GCMNetworkManager
, một phần của Dịch vụ Google Play, cung cấp tính năng lên lịch công việc tương tự có khả năng tương thích trên các phiên bản Android cũ.
Chúng tôi đang tiếp tục mở rộng JobScheduler
và GCMNetworkManager
để đáp ứng thêm nhiều trường hợp sử dụng của bạn. Ví dụ: trong Android 7.0, giờ đây, bạn có thể lên lịch cho hoạt động trong nền dựa trên các thay đổi trong Trình cung cấp nội dung. Đồng thời, chúng tôi đang bắt đầu không dùng một số mẫu cũ có thể làm giảm hiệu suất hệ thống, đặc biệt là trên các thiết bị có bộ nhớ thấp.
Trên Android 7.0, chúng tôi sẽ xoá 3 thông báo truyền phát ngầm thường dùng — CONNECTIVITY_ACTION
, ACTION_NEW_PICTURE
và ACTION_NEW_VIDEO
— vì các thông báo đó có thể đánh thức các tiến trình chạy ở chế độ nền của nhiều ứng dụng cùng một lúc, đồng thời làm căng thẳng bộ nhớ và pin. Nếu ứng dụng của bạn nhận được những API này, hãy tận dụng Android 7.0 để chuyển sang JobScheduler
và các API liên quan.
Hãy xem tài liệu về Tối ưu hoá ở chế độ nền để biết thông tin chi tiết.
SurfaceView
Android 7.0 mang đến chuyển động đồng bộ cho lớp SurfaceView
, mang lại hiệu suất pin tốt hơn TextureView
trong một số trường hợp nhất định: Khi hiển thị video hoặc nội dung 3D, các ứng dụng có vị trí video ảnh động và cuộn sẽ sử dụng ít pin hơn bằng SurfaceView
so với TextureView
.
SurfaceView
cho phép tổng hợp tiết kiệm pin hơn trên màn hình, vì lớp này được kết hợp trong phần cứng chuyên dụng, tách biệt với nội dung cửa sổ ứng dụng. Do đó, phương thức này tạo ra ít bản sao trung gian hơn TextureView
.
Vị trí nội dung của đối tượng SurfaceView
hiện được cập nhật đồng bộ với nội dung ứng dụng chứa. Một kết quả của thay đổi này là các bản dịch hoặc tỷ lệ đơn giản của video phát trong SurfaceView
không còn tạo ra các thanh màu đen dọc theo khung hiển thị khi khung hiển thị di chuyển.
Kể từ Android 7.0, bạn nên tiết kiệm pin bằng cách sử dụng SurfaceView
thay vì TextureView
.
Tiết kiệm dữ liệu
![Trình tiết kiệm dữ liệu trong phần Cài đặt](https://developer.android.com/static/images/android-7.0/datasaver.png?authuser=8&hl=vi)
Hình 4. Trình tiết kiệm dữ liệu trong phần Cài đặt.
Trong suốt vòng đời của thiết bị di động, chi phí của gói dữ liệu di động thường vượt quá chi phí của chính thiết bị đó. Đối với nhiều người dùng, dữ liệu di động là một tài nguyên đắt đỏ mà họ muốn tiết kiệm.
Android 7.0 ra mắt chế độ Trình tiết kiệm dữ liệu, một dịch vụ hệ thống mới giúp giảm mức sử dụng dữ liệu di động của các ứng dụng, dù là chuyển vùng, gần cuối chu kỳ thanh toán hay trên gói dữ liệu trả trước nhỏ. Trình tiết kiệm dữ liệu cho phép người dùng kiểm soát cách ứng dụng sử dụng dữ liệu di động và cho phép nhà phát triển cung cấp dịch vụ hiệu quả hơn khi Trình tiết kiệm dữ liệu đang bật.
Khi người dùng bật Trình tiết kiệm dữ liệu trong phần Cài đặt và thiết bị đang sử dụng mạng có đo lượng dữ liệu, hệ thống sẽ chặn mức sử dụng dữ liệu nền và ra tín hiệu cho các ứng dụng sử dụng ít dữ liệu hơn ở nền trước bất cứ khi nào có thể, chẳng hạn như bằng cách hạn chế tốc độ bit khi truyền trực tuyến, giảm chất lượng hình ảnh, trì hoãn việc lưu trước vào bộ nhớ đệm tối ưu, v.v. Người dùng có thể cho phép các ứng dụng cụ thể cho phép sử dụng dữ liệu có đo lượng dữ liệu trong nền ngay cả khi Trình tiết kiệm dữ liệu đang bật.
Android 7.0 mở rộng ConnectivityManager
để cung cấp cho các ứng dụng một cách truy xuất các lựa chọn ưu tiên về Trình tiết kiệm dữ liệu của người dùng và theo dõi các thay đổi về lựa chọn ưu tiên. Tất cả các ứng dụng đều phải kiểm tra xem người dùng đã bật Trình tiết kiệm dữ liệu hay chưa, đồng thời cố gắng giới hạn mức sử dụng dữ liệu ở chế độ nền và nền trước.
Vulkan API
Android 7.0 tích hợp VulkanTM, một API kết xuất hình ảnh 3D mới, vào nền tảng này. Giống như OpenGLTM ES, Vulkan là một tiêu chuẩn mở cho đồ hoạ và kết xuất 3D do Khronos Group duy trì.
Vulkan được thiết kế từ đầu đến cuối để giảm thiểu mức hao tổn CPU trong trình điều khiển và cho phép ứng dụng trực tiếp điều khiển hoạt động của GPU. Vulkan cũng cho phép xử lý song song hiệu quả hơn bằng cách cho phép nhiều luồng thực hiện công việc như tạo vùng đệm lệnh cùng một lúc.
Các công cụ và thư viện phát triển Vulkan được tích hợp vào SDK Android 7.0. Các nguyên tắc này bao gồm:
- Tiêu đề
- Lớp xác thực (thư viện gỡ lỗi)
- Trình biên dịch chương trình đổ bóng SPIR-V
- Thư viện biên dịch chương trình đổ bóng trong thời gian chạy SPIR-V
Vulkan chỉ dành cho các ứng dụng trên thiết bị có phần cứng hỗ trợ Vulkan, chẳng hạn như Nexus 5X, Nexus 6P và Nexus Player. Chúng tôi đang phối hợp chặt chẽ với các đối tác để cung cấp Vulkan trên nhiều thiết bị hơn trong thời gian sớm nhất có thể.
Để biết thêm thông tin, hãy xem tài liệu API.
API Thẻ thông tin cài đặt nhanh
![Ô Cài đặt nhanh trong ngăn thông báo](https://developer.android.com/static/images/android-7.0/quicksettings.png?authuser=8&hl=vi)
Hình 5. Ô Cài đặt nhanh trong ngăn thông báo.
Cài đặt nhanh là một cách đơn giản và phổ biến để hiển thị các chế độ cài đặt và thao tác chính, ngay trên ngăn thông báo. Trên Android 7.0, chúng tôi đã mở rộng phạm vi của trình đơn Cài đặt nhanh để giúp ứng dụng này trở nên hữu ích và thuận tiện hơn nữa.
Chúng tôi đã thêm nhiều không gian hơn cho các thẻ thông tin Cài đặt nhanh bổ sung mà người dùng có thể truy cập trên một khu vực hiển thị phân trang bằng cách vuốt sang trái hoặc sang phải. Chúng tôi cũng đã cho người dùng quyền kiểm soát nội dung và vị trí hiển thị của ô Cài đặt nhanh – người dùng có thể thêm hoặc di chuyển ô chỉ bằng cách kéo và thả.
Đối với các nhà phát triển, Android 7.0 cũng bổ sung một API mới cho phép bạn xác định các thẻ thông tin Cài đặt nhanh của riêng mình để giúp người dùng dễ dàng truy cập vào các thao tác và chế độ điều khiển chính trong ứng dụng của bạn.
Ô Cài đặt nhanh dành riêng cho các chế độ điều khiển hoặc thao tác mang tính khẩn cấp hoặc được sử dụng thường xuyên. Bạn không nên dùng ô này làm lối tắt để chạy ứng dụng.
Sau khi xác định thẻ thông tin, bạn có thể hiển thị các thẻ thông tin đó cho người dùng. Họ có thể thêm thẻ thông tin vào trình đơn Cài đặt nhanh chỉ bằng cách kéo và thả.
Để biết thông tin về cách tạo thẻ thông tin ứng dụng, hãy xem tài liệu tham khảo về Tile
.
Chặn số
Android 7.0 hiện hỗ trợ tính năng chặn số trong nền tảng và cung cấp một API khung để cho phép các nhà cung cấp dịch vụ duy trì danh sách số bị chặn. Ứng dụng SMS mặc định, ứng dụng điện thoại mặc định và các ứng dụng của nhà mạng có thể đọc và ghi vào danh sách số bị chặn. Các ứng dụng khác không thể truy cập vào danh sách này.
Bằng cách đặt chặn số thành một tính năng tiêu chuẩn của nền tảng, Android cung cấp một cách nhất quán để các ứng dụng hỗ trợ chặn số trên nhiều loại thiết bị. Ứng dụng có thể tận dụng những lợi ích sau đây:
- Số bị chặn cuộc gọi cũng bị chặn tin nhắn
- Các số bị chặn có thể vẫn tồn tại sau khi đặt lại và thiết bị thông qua tính năng Sao lưu và khôi phục
- Nhiều ứng dụng có thể sử dụng cùng một danh sách số bị chặn
Ngoài ra, khi tích hợp ứng dụng của nhà mạng thông qua Android, nhà mạng có thể đọc danh sách số bị chặn trên thiết bị và chặn phía dịch vụ cho người dùng để ngăn các cuộc gọi và tin nhắn không mong muốn tiếp cận người dùng thông qua bất kỳ phương tiện nào, chẳng hạn như điểm cuối VOIP hoặc điện thoại chuyển tiếp.
Để biết thêm thông tin, hãy xem tài liệu tham khảo cho BlockedNumberContract
.
Sàng lọc cuộc gọi
Android 7.0 cho phép ứng dụng điện thoại mặc định sàng lọc các cuộc gọi đến. Ứng dụng điện thoại thực hiện việc này bằng cách triển khai CallScreeningService
mới. Mã này cho phép ứng dụng điện thoại thực hiện một số hành động dựa trên Call.Details
của cuộc gọi đến, chẳng hạn như:
- Từ chối cuộc gọi đến
- Không cho phép cuộc gọi đến nhật ký cuộc gọi
- Không hiển thị thông báo về cuộc gọi cho người dùng
Để biết thêm thông tin, hãy xem tài liệu tham khảo cho CallScreeningService
.
Hỗ trợ đa ngôn ngữ, nhiều ngôn ngữ hơn
Android 7.0 hiện cho phép người dùng chọn nhiều ngôn ngữ trong phần Cài đặt để hỗ trợ tốt hơn cho các trường hợp sử dụng song ngữ. Ứng dụng có thể sử dụng API mới để lấy ngôn ngữ đã chọn của người dùng, sau đó cung cấp trải nghiệm người dùng tinh vi hơn cho người dùng sử dụng nhiều ngôn ngữ, chẳng hạn như hiển thị kết quả tìm kiếm bằng nhiều ngôn ngữ và không đề xuất dịch trang web bằng ngôn ngữ mà người dùng đã biết.
Ngoài việc hỗ trợ nhiều ngôn ngữ, Android 7.0 còn mở rộng nhiều ngôn ngữ dành cho người dùng. Ứng dụng này cung cấp hơn 25 biến thể cho các ngôn ngữ thường dùng như tiếng Anh, tiếng Tây Ban Nha, tiếng Pháp và tiếng Ả Rập. Ngoài ra, tính năng này cũng hỗ trợ một phần cho hơn 100 ngôn ngữ mới.
Ứng dụng có thể nhận được danh sách ngôn ngữ do người dùng đặt bằng cách gọi LocaleList.GetDefault()
. Để hỗ trợ số lượng ngôn ngữ mở rộng, Android 7.0 đang thay đổi cách phân giải tài nguyên. Hãy nhớ kiểm thử và xác minh rằng ứng dụng của bạn hoạt động như mong đợi với logic phân giải tài nguyên mới.
Để tìm hiểu về hành vi phân giải tài nguyên mới và các phương pháp hay nhất bạn nên làm theo, hãy xem phần Hỗ trợ đa ngôn ngữ.
Biểu tượng cảm xúc mới
Android 7.0 giới thiệu thêm các biểu tượng cảm xúc và các tính năng liên quan đến biểu tượng cảm xúc, bao gồm cả biểu tượng cảm xúc màu da và tính năng hỗ trợ các bộ chọn biến thể. Nếu ứng dụng của bạn hỗ trợ biểu tượng cảm xúc, hãy làm theo hướng dẫn dưới đây để tận dụng các tính năng liên quan đến biểu tượng cảm xúc này.
-
Kiểm tra để đảm bảo thiết bị có biểu tượng cảm xúc trước khi chèn.
Để kiểm tra xem biểu tượng cảm xúc nào có trong phông chữ hệ thống, hãy sử dụng phương thức
hasGlyph(String)
. - Kiểm tra để đảm bảo biểu tượng cảm xúc hỗ trợ bộ chọn biến thể. Bộ chọn biến thể cho phép bạn trình bày một số biểu tượng cảm xúc nhất định có màu hoặc đen trắng. Trên thiết bị di động, ứng dụng phải biểu thị biểu tượng cảm xúc có màu thay vì dạng đen trắng. Tuy nhiên, nếu hiển thị biểu tượng cảm xúc cùng dòng với văn bản, thì ứng dụng nên sử dụng biến thể đen trắng. Để xác định xem biểu tượng cảm xúc có biến thể hay không, hãy sử dụng bộ chọn biến thể. Để xem danh sách đầy đủ các ký tự có biến thể, hãy tham khảo phần trình tự biến thể biểu tượng cảm xúc trong tài liệu về Unicode về biến thể.
-
Kiểm tra để đảm bảo biểu tượng cảm xúc phù hợp với màu da. Android 7.0 cho phép người dùng chỉnh sửa màu da kết xuất của biểu tượng cảm xúc theo ý muốn. Các ứng dụng bàn phím phải cung cấp các chỉ báo trực quan cho những biểu tượng cảm xúc có nhiều màu da và phải cho phép người dùng chọn màu da mà họ muốn. Để xác định biểu tượng cảm xúc hệ thống nào có công cụ sửa đổi màu da, hãy sử dụng phương thức
hasGlyph(String)
. Bạn có thể xác định biểu tượng cảm xúc nào sử dụng màu da bằng cách đọc tài liệu về Unicode.
API ICU4J trong Android
Android 7.0 hiện cung cấp một tập hợp con các API ICU4J trong khung Android trong gói android.icu
. Quá trình di chuyển rất dễ dàng và chủ yếu chỉ đòi hỏi thay đổi từ không gian tên com.java.icu
sang android.icu
. Nếu bạn đang sử dụng gói ICU4J trong ứng dụng, thì việc chuyển sang các API android.icu
được cung cấp trong khung Android có thể giúp tiết kiệm đáng kể kích thước tệp APK.
Để tìm hiểu thêm về các API ICU4J của Android, hãy xem nội dung Hỗ trợ ICU4J.
WebView
Chrome kết hợp với WebView
Kể từ Chrome phiên bản 51 trên Android 7.0 trở lên, APK Chrome trên thiết bị của bạn sẽ được dùng để cung cấp và kết xuất WebView của hệ thống Android. Phương pháp này cải thiện mức sử dụng bộ nhớ trên chính thiết bị, đồng thời giảm băng thông cần thiết để cập nhật WebView (vì APK WebView độc lập sẽ không còn được cập nhật miễn là Chrome vẫn đang bật).
Bạn có thể chọn nhà cung cấp WebView bằng cách bật Tuỳ chọn cho nhà phát triển và chọn Triển khai WebView. Bạn có thể sử dụng bất kỳ phiên bản Chrome nào tương thích (Nhà phát triển, Beta hoặc Chính thức) đã cài đặt trên thiết bị của mình hoặc APK WebView độc lập để triển khai WebView.
Nhiều quy trình
Kể từ Chrome phiên bản 51 trong Android 7.0, WebView sẽ chạy nội dung trên web trong một quy trình hộp cát riêng khi bạn bật tuỳ chọn "Multiprocess WebView" dành cho nhà phát triển.
Chúng tôi mong nhận được ý kiến phản hồi về khả năng tương thích và hiệu suất thời gian chạy trong N trước khi bật WebView đa quy trình trong phiên bản Android trong tương lai. Trong phiên bản này, hệ thống dự kiến sẽ có hồi quy về thời gian khởi động, tổng mức sử dụng bộ nhớ và hiệu suất kết xuất phần mềm.
Nếu bạn phát hiện thấy các vấn đề không mong muốn trong chế độ đa tiến trình, chúng tôi muốn được giải thích về các vấn đề đó. Vui lòng liên hệ với nhóm WebView về công cụ theo dõi lỗi Chromium.
JavaScript chạy trước khi tải trang
Kể từ các ứng dụng nhắm đến Android 7.0, ngữ cảnh JavaScript sẽ được đặt lại khi trang mới được tải. Hiện tại, ngữ cảnh được chuyển sang cho trang đầu tiên được tải trong một phiên bản WebView mới.
Các nhà phát triển muốn chèn JavaScript vào WebView nên thực thi tập lệnh sau khi trang bắt đầu tải.
Định vị vị trí trên các nguồn gốc không an toàn
Kể từ các ứng dụng nhắm đến Android 7.0, chúng tôi sẽ chỉ cho phép API vị trí địa lý trên các nguồn gốc bảo mật (qua HTTPS.) Chính sách này được thiết kế để bảo vệ thông tin riêng tư của người dùng khi họ sử dụng kết nối không an toàn.
Thử nghiệm bằng WebView bản beta
WebView được cập nhật thường xuyên, vì vậy, bạn nên kiểm tra khả năng tương thích với ứng dụng thường xuyên sử dụng kênh thử nghiệm của WebView. Để bắt đầu thử nghiệm các phiên bản phát hành trước của WebView trên Android 7.0, hãy tải Chrome Dev hoặc Chrome Beta xuống và chọn làm phương thức triển khai WebView trong phần Tuỳ chọn cho nhà phát triển như mô tả ở trên. Vui lòng báo cáo vấn đề qua trình theo dõi lỗi Chromium để chúng tôi có thể khắc phục vấn đề trước khi phát hành phiên bản WebView mới.
API OpenGLTM ES 3.2
Android 7.0 bổ sung giao diện khung và hỗ trợ nền tảng cho OpenGL ES 3.2, bao gồm:
- Tất cả tiện ích trong
Gói tiện ích Android (AEP) ngoại trừ
EXT_texture_sRGB_decode
. - Bộ đệm khung dấu phẩy động dành cho HDR và chế độ đổ bóng trễ.
- Các lệnh gọi vẽ BaseVertex giúp phân phối và truyền trực tuyến hiệu quả hơn.
- Kiểm soát quyền truy cập bộ đệm mạnh mẽ để giảm mức hao tổn WebGL.
API khung cho OpenGL ES 3.2 trên Android 7.0 được cung cấp cùng với lớp GLES32
. Khi sử dụng OpenGL ES 3.2, hãy nhớ khai báo yêu cầu trong tệp kê khai bằng cách dùng thẻ <uses-feature>
và thuộc tính android:glEsVersion
.
Để biết thông tin về cách sử dụng OpenGL ES, bao gồm cả cách kiểm tra phiên bản OpenGL ES được hỗ trợ trên thiết bị trong thời gian chạy, hãy xem phần Hướng dẫn về API OpenGL ES.
Bản ghi của Android TV
Android 7.0 bổ sung khả năng ghi và phát nội dung qua các dịch vụ đầu vào của Android TV thông qua các API ghi mới. Dựa trên các API chuyển dịch thời gian hiện có, dịch vụ đầu vào TV có thể kiểm soát việc dữ liệu kênh nào có thể được ghi lại, cách lưu các phiên được ghi lại và quản lý hoạt động tương tác của người dùng với nội dung đã ghi.
Để biết thêm thông tin, hãy xem phần API Ghi âm của Android TV.
Android for Work
Android for Work bổ sung nhiều tính năng và API mới cho các thiết bị chạy Android 7.0. Dưới đây là một số điểm nổi bật – để xem danh sách đầy đủ các tính năng, hãy xem danh sách tính năng của Android Enterprise.
Thử thách bảo mật hồ sơ công việc
Chủ sở hữu hồ sơ nhắm đến SDK N có thể chỉ định một thử thách bảo mật riêng cho các ứng dụng chạy trong hồ sơ công việc. Thử thách công việc sẽ xuất hiện khi người dùng cố gắng mở một ứng dụng công việc bất kỳ. Nếu hoàn thành thử thách bảo mật, bạn sẽ mở khoá được hồ sơ công việc và giải mã hồ sơ đó nếu cần. Đối với chủ sở hữu hồ sơ, ACTION_SET_NEW_PASSWORD
sẽ nhắc người dùng đặt thử thách trong công việc và ACTION_SET_NEW_PARENT_PROFILE_PASSWORD
nhắc người dùng đặt phương thức khoá thiết bị.
Chủ sở hữu hồ sơ có thể đặt chính sách mật mã riêng biệt cho thử thách công việc (chẳng hạn như thời lượng mã PIN hoặc việc có thể dùng vân tay để mở khoá hồ sơ hay không) thông qua setPasswordQuality()
, setPasswordMinimumLength()
và các phương thức liên quan. Chủ sở hữu hồ sơ cũng có thể đặt khoá thiết bị bằng cách sử dụng thực thể DevicePolicyManager
do phương thức getParentProfileInstance()
mới trả về.
Ngoài ra, chủ sở hữu hồ sơ có thể tuỳ chỉnh màn hình thông tin xác thực cho thử thách công việc bằng các phương thức setOrganizationColor()
và setOrganizationName()
mới.
Tắt công việc
Trên thiết bị có hồ sơ công việc, người dùng có thể bật/tắt chế độ công việc. Khi bạn tắt chế độ công việc, người dùng được quản lý sẽ tạm thời bị tắt, tức là các ứng dụng hồ sơ công việc, tính năng đồng bộ hoá trong nền và thông báo sẽ bị tắt. Bao gồm cả ứng dụng của chủ sở hữu hồ sơ. Khi chế độ làm việc đang tắt, hệ thống sẽ hiển thị một biểu tượng trạng thái cố định để nhắc người dùng rằng họ không thể chạy các ứng dụng công việc. Trình chạy cho biết rằng các ứng dụng và tiện ích công việc không thể truy cập được.
VPN luôn bật
Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể đảm bảo rằng các ứng dụng công việc luôn kết nối qua một VPN đã chỉ định. Hệ thống sẽ tự động khởi động VPN đó sau khi thiết bị khởi động.
Các phương thức DevicePolicyManager
mới là setAlwaysOnVpnPackage()
và getAlwaysOnVpnPackage()
.
Vì hệ thống có thể liên kết trực tiếp các dịch vụ VPN mà không cần tương tác ứng dụng, nên các ứng dụng VPN cần xử lý các điểm truy cập mới cho VPN luôn bật. Như trước đây, các dịch vụ được biểu thị cho hệ thống bằng thao tác khớp với bộ lọc ý định android.net.VpnService
.
Người dùng cũng có thể đặt các ứng dụng VPN luôn bật theo cách thủ công để triển khai các phương thức VPNService
bằng Settings>More>Vpn (Cài đặt>Thêm>Vpn). Lựa chọn bật VPN luôn bật trong phần Cài đặt chỉ hoạt động nếu ứng dụng VPN nhắm đến API cấp 24.
Cấp phép tuỳ chỉnh
Một ứng dụng có thể tuỳ chỉnh quy trình cấp phép của chủ sở hữu hồ sơ và chủ sở hữu thiết bị bằng màu và biểu trưng của công ty.
DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR
tuỳ chỉnh màu flow. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI
tuỳ chỉnh quy trình bằng biểu trưng của công ty.
Các tính năng nâng cao về hỗ trợ tiếp cận
Android 7.0 hiện cung cấp các chế độ Cài đặt tầm nhìn ngay trên màn hình Chào mừng để thiết lập thiết bị mới. Điều này giúp người dùng khám phá và định cấu hình các tính năng hỗ trợ tiếp cận trên thiết bị của họ dễ dàng hơn, bao gồm cả cử chỉ phóng to, kích thước phông chữ, kích thước màn hình và TalkBack.
Khi các bộ tính năng hỗ trợ tiếp cận này có vị trí nổi bật hơn, người dùng có nhiều khả năng sẽ dùng thử ứng dụng của bạn khi bật chúng. Hãy nhớ kiểm thử ứng dụng của bạn sớm khi bật các chế độ cài đặt này. Bạn có thể bật các tính năng này trong phần Cài đặt > Hỗ trợ tiếp cận.
Cũng trong Android 7.0, các dịch vụ hỗ trợ tiếp cận giờ đây có thể giúp những người dùng bị khuyết tật vận động có thể chạm vào màn hình. API mới cho phép xây dựng dịch vụ có các tính năng như theo dõi khuôn mặt, theo dõi mắt, quét điểm, v.v. để đáp ứng nhu cầu của những người dùng đó.
Để biết thêm thông tin, hãy xem tài liệu tham khảo cho GestureDescription
.
Khởi động trực tiếp
Tính năng khởi động trực tiếp giúp cải thiện thời gian khởi động thiết bị và cho phép các ứng dụng đã đăng ký bị hạn chế chức năng ngay cả sau lần khởi động lại không mong muốn. Ví dụ: nếu một thiết bị đã mã hoá khởi động lại trong khi người dùng đang ngủ, thì giờ đây, các chuông báo đã đăng ký, tin nhắn và cuộc gọi đến có thể tiếp tục thông báo cho người dùng như bình thường. Điều này cũng có nghĩa là các dịch vụ hỗ trợ tiếp cận cũng có thể sử dụng được ngay sau khi khởi động lại.
Tính năng khởi động trực tiếp tận dụng phương thức mã hoá dựa trên tệp trong Android 7.0 để kích hoạt các chính sách mã hoá chi tiết cho cả dữ liệu hệ thống và dữ liệu ứng dụng. Hệ thống này sử dụng một kho lưu trữ đã mã hoá thiết bị cho một số dữ liệu hệ thống và dữ liệu ứng dụng được đăng ký rõ ràng. Theo mặc định, kho lưu trữ thông tin xác thực được mã hoá được sử dụng cho tất cả dữ liệu hệ thống, dữ liệu người dùng, ứng dụng và dữ liệu ứng dụng khác.
Khi khởi động, hệ thống khởi động ở chế độ hạn chế chỉ có quyền truy cập vào dữ liệu đã mã hoá của thiết bị và không có quyền truy cập chung vào ứng dụng hoặc dữ liệu.
Nếu muốn chạy các thành phần ở chế độ này, bạn có thể đăng ký các thành phần đó bằng cách đặt một cờ trong tệp kê khai. Sau khi khởi động lại, hệ thống sẽ kích hoạt các thành phần đã đăng ký bằng cách truyền tin ý định LOCKED_BOOT_COMPLETED
. Hệ thống đảm bảo rằng có dữ liệu ứng dụng đã mã hoá của thiết bị đã đăng ký trước khi mở khoá. Tất cả dữ liệu khác sẽ không có sẵn cho đến khi Người dùng xác nhận thông tin đăng nhập màn hình khoá của họ để giải mã.
Chứng thực khoá
Android 7.0 giới thiệu chứng thực khoá, một công cụ bảo mật mới giúp bạn đảm bảo rằng các cặp khoá được lưu trữ trong kho khoá dựa trên phần cứng của thiết bị bảo vệ đúng cách thông tin nhạy cảm mà ứng dụng của bạn sử dụng. Bằng cách sử dụng công cụ này, bạn sẽ yên tâm hơn rằng ứng dụng của mình tương tác với các khoá nằm trong phần cứng bảo mật, ngay cả khi thiết bị đang chạy ứng dụng của bạn đã bị can thiệp vào hệ thống. Nếu sử dụng các khoá từ kho khoá dựa trên phần cứng trong ứng dụng, bạn nên dùng công cụ này, đặc biệt là khi bạn sử dụng các khoá đó để xác minh thông tin nhạy cảm trong ứng dụng.
Chứng thực khoá cho phép bạn xác minh rằng một cặp khoá RSA hoặc EC đã được tạo và lưu trữ trong kho khoá dựa trên phần cứng của thiết bị trong môi trường thực thi đáng tin cậy (TEE) của thiết bị. Công cụ này cũng cho phép bạn sử dụng một dịch vụ bên ngoài thiết bị, chẳng hạn như máy chủ phụ trợ của ứng dụng, để xác định và xác minh chặt chẽ việc sử dụng cũng như tính hợp lệ của cặp khoá. Các tính năng này cung cấp thêm một mức bảo mật giúp bảo vệ cặp khoá, ngay cả khi ai đó can thiệp vào hệ thống của thiết bị hoặc xâm phạm tính bảo mật của nền tảng Android đang chạy trên thiết bị.
Lưu ý: Chỉ một số ít thiết bị chạy Android 7.0 hỗ trợ chứng thực khoá ở cấp độ phần cứng; tất cả các thiết bị khác chạy Android 7.0 đều sử dụng quy trình chứng thực khoá ở cấp độ phần mềm. Trước khi xác minh các thuộc tính của khoá dựa trên phần cứng trên thiết bị trong môi trường cấp sản xuất, bạn phải đảm bảo rằng thiết bị hỗ trợ quy trình chứng thực khoá ở cấp độ phần cứng. Để thực hiện việc này, bạn nên kiểm tra để đảm bảo chuỗi chứng chỉ chứng thực có chứa chứng chỉ gốc do khoá gốc chứng thực của Google ký và phần tử attestationSecurityLevel
trong cấu trúc dữ liệu mô tả khoá được đặt thành cấp bảo mật TrustedEnvironment.
Để biết thêm thông tin, hãy xem tài liệu dành cho nhà phát triển về Chứng thực khoá.
Cấu hình bảo mật mạng
Trong Android 7.0, các ứng dụng có thể tuỳ chỉnh hành vi của các kết nối bảo mật (HTTPS, TLS) một cách an toàn mà không cần sửa đổi mã, bằng cách sử dụng Cấu hình bảo mật mạng khai báo thay vì sử dụng các API có lập trình thông thường dễ gặp lỗi (ví dụ: X509TrustManager).
Các tính năng được hỗ trợ:
- Neo tin cậy tuỳ chỉnh. Cho phép một ứng dụng tuỳ chỉnh Tổ chức phát hành chứng chỉ (CA) nào đáng tin cậy cho các kết nối bảo mật. Ví dụ: tin tưởng các chứng chỉ tự ký cụ thể hoặc một nhóm CA công khai bị hạn chế.
- Ghi đè chế độ chỉ gỡ lỗi. Cho phép nhà phát triển ứng dụng gỡ lỗi an toàn các kết nối bảo mật của ứng dụng mà không làm tăng rủi ro cho cơ sở đã cài đặt.
- Chọn không sử dụng lưu lượng truy cập qua văn bản thô. Cho phép ứng dụng tự bảo vệ khỏi việc vô tình sử dụng lưu lượng truy cập qua văn bản thô.
- Ghim chứng chỉ. Một tính năng nâng cao cho phép ứng dụng giới hạn những khoá máy chủ đáng tin cậy cho các kết nối bảo mật.
Để biết thêm thông tin, hãy xem bài viết Cấu hình bảo mật mạng.
Tổ chức phát hành chứng chỉ mặc định đáng tin cậy
Theo mặc định, các ứng dụng nhắm mục tiêu Android 7.0 chỉ tin tưởng các chứng chỉ do hệ thống cung cấp và không còn tin tưởng Tổ chức phát hành chứng chỉ (CA) do người dùng thêm. Các ứng dụng nhắm đến Android 7.0 (API cấp 24) và muốn tin tưởng các CA do người dùng thêm phải sử dụng Cấu hình bảo mật mạng để chỉ định mức độ đáng tin cậy của các CA của người dùng.
Lược đồ chữ ký APK phiên bản 2
Android 7.0 ra mắt Lược đồ chữ ký APK v2, một lược đồ ký ứng dụng mới giúp tăng thời gian cài đặt ứng dụng và tăng cường khả năng bảo vệ trước các thay đổi trái phép đối với tệp APK. Theo mặc định, Android Studio 2.2 và Trình bổ trợ Android cho Gradle 2.2 sẽ ký ứng dụng của bạn bằng cả Lược đồ chữ ký APK v2 và lược đồ ký truyền thống sử dụng tính năng ký JAR.
Mặc dù bạn nên áp dụng Lược đồ chữ ký APK phiên bản 2 cho ứng dụng của mình, nhưng bạn không bắt buộc phải sử dụng lược đồ mới này. Nếu ứng dụng của bạn không tạo bản dựng đúng cách khi sử dụng Lược đồ chữ ký APK phiên bản 2, thì bạn có thể tắt lược đồ mới đó. Quá trình vô hiệu hoá này sẽ khiến Android Studio 2.2 và Trình bổ trợ Android cho Gradle 2.2 ký ứng dụng của bạn chỉ bằng lược đồ ký truyền thống. Để ký chỉ bằng lược đồ truyền thống, hãy mở tệp build.gradle
ở cấp mô-đun, sau đó thêm dòng v2SigningEnabled false
vào cấu hình ký bản phát hành:
android { ... defaultConfig { ... } signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" v2SigningEnabled false } } }
Thận trọng: Nếu bạn ký ứng dụng bằng Lược đồ chữ ký APK phiên bản 2 và thực hiện các thay đổi khác trên ứng dụng, thì chữ ký của ứng dụng sẽ không hợp lệ. Vì lý do này, hãy sử dụng các công cụ như zipalign
trước khi ký ứng dụng bằng Lược đồ chữ ký APK phiên bản 2, chứ không phải sau đó.
Để biết thêm thông tin, hãy đọc các tài liệu Android Studio mô tả cách ký ứng dụng trong Android Studio và cách định cấu hình tệp bản dựng để ký ứng dụng bằng Trình bổ trợ Android cho Gradle.
Quyền truy cập vào thư mục có giới hạn
Trên Android 7.0, các ứng dụng có thể dùng các API mới để yêu cầu quyền truy cập vào các thư mục bộ nhớ ngoài cụ thể, bao gồm cả các thư mục trên phương tiện di động, chẳng hạn như thẻ SD. Các API mới này giúp đơn giản hoá đáng kể cách ứng dụng truy cập vào các thư mục tiêu chuẩn trong bộ nhớ ngoài, chẳng hạn như thư mục Pictures
. Các ứng dụng như ứng dụng ảnh có thể dùng các API này thay vì sử dụng READ_EXTERNAL_STORAGE
để cấp quyền truy cập vào tất cả thư mục bộ nhớ hoặc Khung truy cập bộ nhớ (Storage Access Framework), khiến người dùng phải chuyển đến thư mục đó.
Ngoài ra, các API mới này đơn giản hoá các bước người dùng cần thực hiện để cấp quyền truy cập vào bộ nhớ ngoài vào ứng dụng của bạn. Khi bạn sử dụng các API mới, hệ thống sẽ sử dụng một giao diện người dùng cấp quyền đơn giản, trong đó nêu rõ thông tin chi tiết về thư mục mà ứng dụng đang yêu cầu quyền truy cập.
Để biết thêm thông tin, hãy xem tài liệu dành cho nhà phát triển Quyền truy cập thư mục có giới hạn.
Trình trợ giúp phím tắt
Trên Android 7.0, người dùng có thể nhấn Meta + / để kích hoạt màn hình Phím tắt. Màn hình này hiển thị tất cả các phím tắt hiện có trên cả hệ thống và ứng dụng đang được xem xét. Hệ thống sẽ tự động truy xuất các lối tắt này từ trình đơn của ứng dụng nếu có các lối tắt đó. Bạn cũng có thể cung cấp danh sách lối tắt được tinh chỉnh của riêng mình cho màn hình. Bạn có thể thực hiện việc này bằng cách ghi đè phương thức onProvideKeyboardShortcuts()
.
Lưu ý: Phím Meta không có trên một số bàn phím: trên bàn phím Macintosh, đó là phím Command, trên bàn phím Windows là phím Windows, còn trên Pixel C và bàn phím ChromeOS, phím đó là phím Search (Tìm kiếm).
Để kích hoạt Trình trợ giúp phím tắt ở bất cứ đâu trong ứng dụng, hãy gọi requestShowKeyboardShortcuts()
từ hoạt động liên quan.
API con trỏ tuỳ chỉnh
Android 7.0 ra mắt API Con trỏ tuỳ chỉnh, cho phép bạn tuỳ chỉnh giao diện, chế độ hiển thị và hành vi của con trỏ. Tính năng này đặc biệt hữu ích khi người dùng sử dụng chuột hoặc bàn di chuột để tương tác với các đối tượng giao diện người dùng. Con trỏ mặc định sử dụng biểu tượng tiêu chuẩn. API này cũng có các chức năng nâng cao như thay đổi giao diện của biểu tượng con trỏ dựa trên chuyển động cụ thể của chuột hoặc bàn di chuột.
Để đặt biểu tượng con trỏ, hãy ghi đè phương thức onResolvePointerIcon()
của lớp View
. Phương thức này sử dụng một đối tượng PointerIcon
để vẽ biểu tượng tương ứng với một sự kiện chuyển động cụ thể.
API Hiệu suất ổn định
Hiệu suất có thể biến động đáng kể đối với các ứng dụng chạy trong thời gian dài, do hệ thống điều tiết các động cơ hệ thống trên chip khi các thành phần của thiết bị đạt đến giới hạn nhiệt độ. Sự biến động này tạo ra một mục tiêu chuyển động cho các nhà phát triển ứng dụng, nhằm tạo ra các ứng dụng có hiệu suất cao và chạy trong thời gian dài.
Để giải quyết những hạn chế này, Android 7.0 sẽ hỗ trợ chế độ hiệu suất ổn định, cho phép nhà sản xuất thiết bị gốc (OEM) đưa ra gợi ý về hiệu suất của thiết bị đối với các ứng dụng chạy trong thời gian dài. Nhà phát triển ứng dụng có thể sử dụng các gợi ý này để điều chỉnh ứng dụng nhằm đạt được mức hiệu suất nhất quán và có thể dự đoán được của thiết bị trong thời gian dài.
Nhà phát triển ứng dụng chỉ có thể dùng thử API mới này trong Android 7.0 trên các thiết bị Nexus 6P. Để sử dụng tính năng này, hãy đặt cờ cho cửa sổ hiệu suất duy trì lâu dài cho cửa sổ bạn muốn chạy ở chế độ hiệu suất duy trì. Hãy đặt cờ này bằng phương thức Window.setSustainedPerformanceMode()
. Hệ thống sẽ tự động tắt chế độ này khi cửa sổ không còn được lấy tiêu điểm.
Hỗ trợ thực tế ảo
Android 7.0 bổ sung các tính năng hỗ trợ và tối ưu hoá nền tảng cho Chế độ thực tế ảo (VR) mới để cho phép các nhà phát triển xây dựng trải nghiệm thực tế ảo chất lượng cao trên thiết bị di động cho người dùng. Có một số tính năng nâng cao hiệu suất, bao gồm cả quyền truy cập vào lõi CPU độc quyền cho các ứng dụng thực tế ảo. Trong các ứng dụng của mình, bạn có thể tận dụng tính năng theo dõi chuyển động thông minh và các thông báo âm thanh nổi phù hợp với thực tế ảo (VR). Quan trọng nhất là Android 7.0 cung cấp đồ hoạ có độ trễ rất thấp. Để biết đầy đủ thông tin về cách tạo ứng dụng thực tế ảo cho Android 7.0, hãy xem bài viết SDK thực tế ảo của Google dành cho Android.
Các tính năng nâng cao cho dịch vụ in
Trong Android 7.0, nhà phát triển dịch vụ in giờ đây có thể hiển thị thêm thông tin về từng máy in và lệnh in.
Giờ đây, khi liệt kê từng máy in, một dịch vụ in có thể đặt biểu tượng cho mỗi máy in theo 2 cách:
- Bạn có thể đặt biểu tượng từ mã nhận dạng tài nguyên bằng cách gọi
setIconResourceId()
. - Bạn có thể hiển thị một biểu tượng từ mạng bằng cách gọi
setHasCustomPrinterIcon()
và đặt lệnh gọi lại cho thời điểm biểu tượng được yêu cầu bằngonRequestCustomPrinterIcon()
.
Ngoài ra, bạn có thể cung cấp hoạt động trên mỗi máy in để hiện thêm thông tin bằng cách gọi setInfoIntent()
.
Bạn có thể cho biết tiến trình và trạng thái của các lệnh in trong thông báo về lệnh in bằng cách gọi lần lượt setProgress()
và setStatus()
.
API Chỉ số khung
API Frame Metrics API cho phép một ứng dụng theo dõi hiệu suất kết xuất giao diện người dùng. API cung cấp chức năng này bằng cách hiển thị API Pub/Sub truyền trực tuyến để chuyển thông tin thời gian kết xuất khung hình cho cửa sổ hiện tại của ứng dụng. Dữ liệu được trả về tương đương với dữ liệu mà adb shell
dumpsys gfxinfo framestats
cho thấy, nhưng không giới hạn ở 120 khung hình trước đó.
Bạn có thể sử dụng Frame Metrics API để đo lường hiệu suất của giao diện người dùng ở cấp độ tương tác trong phiên bản chính thức mà không cần có kết nối USB. API này cho phép thu thập dữ liệu ở mức độ chi tiết cao hơn nhiều so với adb shell dumpsys gfxinfo
. Mức độ chi tiết cao hơn có thể xảy ra vì hệ thống có thể thu thập dữ liệu cho các hoạt động tương tác cụ thể trong ứng dụng; hệ thống không cần thu thập thông tin tóm tắt chung về hiệu suất của toàn bộ ứng dụng hoặc xoá bất kỳ trạng thái chung nào. Bạn có thể sử dụng tính năng này để thu thập dữ liệu hiệu suất và phát hiện sự hồi quy về hiệu suất của giao diện người dùng cho các trường hợp sử dụng thực tế trong một ứng dụng.
Để theo dõi một cửa sổ, hãy triển khai phương thức gọi lại
OnFrameMetricsAvailableListener.onFrameMetricsAvailable()
và đăng ký trên cửa sổ đó.
API này cung cấp một đối tượng FrameMetrics
, chứa dữ liệu thời gian mà hệ thống kết xuất phụ báo cáo cho nhiều mốc quan trọng trong vòng đời khung hình. Các chỉ số được hỗ trợ bao gồm: UNKNOWN_DELAY_DURATION
, INPUT_HANDLING_DURATION
, ANIMATION_DURATION
, LAYOUT_MEASURE_DURATION
, DRAW_DURATION
, SYNC_DURATION
, COMMAND_ISSUE_DURATION
, SWAP_BUFFERS_DURATION
, TOTAL_DURATION
và FIRST_DRAW_FRAME
.
Tệp ảo
Trong các phiên bản Android trước, ứng dụng của bạn có thể sử dụng Khung truy cập bộ nhớ để cho phép người dùng chọn tệp từ tài khoản bộ nhớ trên đám mây của họ, chẳng hạn như Google Drive. Tuy nhiên, không có cách nào để biểu thị các tệp không biểu thị mã byte trực tiếp; mọi tệp đều phải được cung cấp để cung cấp luồng đầu vào.
Android 7.0 thêm khái niệm về tệp ảo vào Khung truy cập bộ nhớ (Storage Access Framework). Tính năng tệp ảo cho phép DocumentsProvider
của bạn trả về các URI của tài liệu có thể dùng với ý định ACTION_VIEW
ngay cả khi các URI đó không biểu thị mã byte trực tiếp. Android 7.0 cũng cho phép bạn cung cấp các định dạng thay thế cho tệp người dùng, tệp ảo hoặc định dạng khác.
Để biết thêm thông tin về cách mở tệp ảo, hãy xem nội dung Mở tệp ảo trong hướng dẫn Khung truy cập bộ nhớ.