Android 7.0 Nougat có gì mới!!

Mới đây Google vừa release phiên bản Android 7.0 với tên chính thức là Nougat. Vậy chúng ta cùng xem Nougat có gì mới.

1. Hỗ trợ Multi-window

Trong Android 7.0 một tính năng rất được mong đợi đã được đưa vào chính là Multi-window (một trong những tính năng đã được phát triển bởi samsung trên các dòng máy cao cấp của họ giờ đã chính thức được đưa vào Android 7.0)

Giờ đây người dùng đã có thể cùng lúc mở 2 ứng dụng trên màn hình cùng một lúc.

  • Trên điện thoại hoặc tablets sử dụng Android 7.0 người dùng có thể chạy 2 ứng dụng song chia dọc màn hình hoặc thằng trên thằng dưới – tóm lại là chia màn hình thành hai phần splitscreen mode. Người dùng có thể thay đổi kích thước của từng màn hình ứng dụng bằng cách kéo đường chia cắt giữa chúng.
  • Trên các thiết bị Android TV, ứng dụng có thể được đặt vào chết độ hình – trong – hình (picture – in – picture mode), điều này cho phép chúng có thể tiếp tục hiển thị nội dung trong khi người dùng có thể tương tác với ứng dụng khác.

Đây là một tính năng mới khá hay, nó giúp người dùng có thể tăng khả năng trải nghiệm, thật là thích khi vừa xem phim lại vừa chat một cách thoải mái mà ko phải chuyển qua chuyển lại 2 ứng dụng. Nhưng nó chỉ thực sự đẹp và hiệu quả nhất trên tablets hay TV, chứ còn trên điện thoại dù là dòng Note màn to, thì khi màn hình bị chia 2 thì màn ứng dụng khá là bé, thao tác thực sự không được thoải mái, và khá là tù, tuy nhiên để đọc báo và chat messenger thì có vẻ vẫn rất là ok.

2. Cải tiến Notification

Trong Android 7.0, notification đã được thiết kế lại, để có thể dễ dàng sử dụng hơn, nhanh hơn. Những thay đổi bao gồm:

  • Cập nhật mẫu: Nhiều mẫu notification đã được cập nhật để tạo sự nhấn mạnh mới về hình ảnh và ảnh đại điện. Developers có thể tận dụng lợi thế của các mẫu mới và thực hiện một số điều chỉnh nhỏ trong code.
  • Tùy biến style Messaging: Bạn có thể tùy biến nhiều hơn về giao diện người dùng với các thông báo bằng cách sử dụng lớp lớp MessagingStyle. Bạn có thể tùy chỉnh tin nhắn, tiêu đề hội thoại, và xem nội dung.
  • Gộp thông báo: Hệ thống có thể nhóm các thông báo lại với nhau, ví dụ: nhóm các thông báo theo chủ đề và hiển thị chúng theo group. Người dùng có thể thực hiện các hành động như Xóa bỏ hoặc Lưu thông báo ngay tại chỗ.
  • Trả lời trực tiếp: Đối với các ứng dụng truyền thông, xã hội thời gian thực, hệ thống Android hỗ trợ việc trả lời trực tiếp nhanh chóng tin nhắn SMS hoặc tin nhắn văn bản ngay trên giao diện thông báo.
  • Dạng xem tùy chỉnh: Hai API mới cho phép bạn tận dụng các trang trí hệ thống, chẳng hạn như tiêu đề thông báo và hành động, khi sử dụng dạng xem tùy chỉnh trong thông báo.

3. Profile-guided JIT/AOT Compilation

Android 7.0 đã được thêm một trình biên dịch Just in Time (JIT) có mã được cấu hình cho ART, nó cho phép nâng cao hiệu suất của các ứng dụng Android khi chạy. Trình biên dịch JIT bổ trợ thêm cho trình biên dịch Ahead of Time (AOT) và giúp cải thiện hiệu suất thời gian chạy, tiết kiệm không gian lưu trữ, và tăng tốc độ cập nhật ứng dụng và cập nhật hệ thống. Trình biên dịch Profile-guided cho phép ART quản lý trình biên dịch AOT/JIT cho mỗi ứng dụng theo cách sử dụng thực tế của nó, cũng như điều kiện thiết bị. Ví dụ: ART duy trì một cấu hình cho các phương thức của ứng dụng, và có thể tiền biên dịch rồi tạo bộ nhớ đệm cho các phương thức đó hoạt động với hiệu suất cao hơn. Những phần khác của ứng dụng sẽ được giữ nguyên không biên dịch cho đến khi chúng đượ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, trình biên dịch profile-guided còn giúp làm giảm lượng RAM tổng thể của một ứng dụng, bao gồm cả các chương trình liên quan. Đây là một tính năng được biệt quan cho trên các thiết bị có bộ nhớ thấp.

ART quản lý trình biên dịch profile-guided bằng cách giảm thiểu tác động tối đa đến pin của điện thoai. Nó sẽ tiền biên dịch khi các thiết bị đang ở trạng thái idle và sạc, tiết kiệm thời gian và pin bằng cách thực hiện công việc đó trước.

4. Cài đặt ứng dụng nhanh

Một trong những lợi ích dễ thấy nhất của trình biên dịch JIT của ART đó là tốc độ cài đặt ứng dụng và cập nhật hệ thống. Ngay cả những ứng dụng lớn cần đến vài phút để tối ưu hóa và cài đặt trong Android 6.0 thì bây giờ có thể cài đặt chỉ trong vài giây, cập nhật hệ thống của nhanh hơn rất nhiều.

5. Chế độ ngủ sâu (Doze) khi di chuyển

Doze đã được giới thiệu trong Android 6.0, đó là một chế độ tiết kiệm pin bằng cách giới hạn hoạt động CPU và mạng của ứng dụng khi thiết bị đang ở trạng thái idle, chẳng hạn khi thiết bị được đặt trên bàn hoặc trong ngăn kéo.

Bây giờ trên Android 7.0, Doze được cải tiến một bước xa hơn và tiết kiệm pin ngay cả khi đang di chuyển. Bất cứ lúc nào màn hình được tắt trong một khoảng thời gian và thiết bị không được cắm sạc, Doze áp dụng một subset của CPU và mạng thân thuộc hạn chế lên các ứng dụng. Điều này có nghĩa là người dùng có thể tiết kiệm pin ngay cả khi mang thiết bị của họ trong túi và di chuyể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 hạn chế truy cập mạng, trì hoãn công việc và đồng bộ. Trong các khoảng thời gian bảo trì ngắn, các ứng dụng được phép truy cập mạng và bất kỳ công việc/đồng bộ bị trì hoãn được thực hiện. Bật màn hình lên hoặc cắm sạc để có thể out khỏi chế độ Doze.

Khi thiết bị được để cố định một lần nữa với màn hình tắt và pin trong một khoảng thời gian, Doze sẽ áp dụng hạn chế tối đa CPU và mạng trên PowerManager.WakeLock, AlarmManager alarms, and GPS/Wi-Fi scans.

6. Project Svelte: Tối ưu hóa chạy ngầm

Project Svelte là một nỗ lực không ngừng để giảm thiệu bộ nhớ RAM của hệt hống và các ứng dụng trên nhiều thiết bị Android trong hệ sinh thái. Trên Android 7.0, Project Svelte được tập trung vào việc tối ưu hóa các ứng dụng chạy ngầm.

Tiến trình chạy ngầm là một phần thiết yếu của hầu hết các ứng dụng. Khi được xử lý đúng, nó có thể mang lại cho người dùng một trải nghiệm tuyệt vời – ngay lập tức, nhanh chóng và nhận biết ngữ cảnh. Khi không được xử lý đúng, tiến trình chạy ngầm có thể tiêu hao RAM (và pin) và ảnh hưởng đến hiệu suất hệ thống cho các ứng dụng khác.

Từ Android 5.0, JobScheduler đã được sử dụng trong việc xử lý tiến trình chạy ngầm như một cách tốt cho người sử dụng. Ứng dụng có thể sắp xếp công việc trong khi để cho hệ thống tối ưu hóa dự trên bộ nhớ, power và điều kiện kết nối. JobScheduler cung cấp kiểm soát và đơn giản, và chúng ta muốn tất cả các ứng dụng để sử dụng nó.

Có một lựa chọn tốt khác là GCMNetworkManager, một phần của Google Play Services, nó cung cấp một lịch trình công việc tương thích với khả năng trên các phiên bản kế thừa của Android.

Chúng tôi đãng tiếp tục kế thừa JobScheduler và GCMNetworkManager để đáp ứng nhiều hơn các trường hợp sử dụng của người dùng. Ví dụ, trong Android 7.0 bạn có thể lên lịch trình cho tiến trình chạy ngầm dựa trên những thay đổi trong Content Providers. Đồng thời, chúng tôi đang bắt đầu không chấp nhận một số mẫu cũ có thể làm giảm hiệu năng của hệ thống, đặc biệt là trên các thiết bị thấp.

Trên Android 7.0, 3 broadcast thông dụng sẽ bị loại bỏ là CONNECTIVITY_ACTION, ACTION_NEW_PICTURE, ACTION_NEW_VIDEO – do chúng có thể đánh thức cùng một lúc nhiều tiến trình chạy ngầm của các ứng dụng liên quan, để bộ nhớ lên và gây tiêu hao pin. Nếu ứng dụng của bạn đang lắng nghe những broadcast đó, thì hãy tận dụng lợi thế của Android 7.0 chuyển sang sử dụng JobScheduler và các API có liên quan để thay thế.

7. Data Saver

Suốt vòng đời của một thiết bị di động, thì chi phí gói dữ liệu di động thường vượt quá chi phí cho chính thiết bị đó. Đối với nhiều người sử dụng, dữ liệu di động là một nguồn tài nguyên khá đắt đỏ mà người dùng rất muốn tiết kiệm.

Trên Android 7.0 giới thiệu chế độ tiết kiệm dữ liệu – Data Saver mode, một dịch vụ hệ thống mới giúp giảm việc sử dụng dữ liệu di động của các ứng dụng, cho dù chuyển vùng, gần cuối chu kỳ thanh toán, hoặc trên một gói dữ liệu nhỏ trả trước. Data Saver cho phép người dùng kiểm soát ứng dụng sử dụng dữ liệu như thế nào và cho phép các nhà phát triển cung cấp dịch vụ hiệu quả hơn khi Data Saver được bật. Khi người dùng bật chế độ Data Saver trong Cài đặt và thiết bị bật một đồng hồ đo lưu lượng mạng, thì các khối hệ thống nền và các tín hiệu của ứng dụng sẽ dử dụng ít dữ liệu hơn khi ở foreground bất cứ khi nào có thể. Chẳng hạn như bằng các hạn chế tốc độ bit cho streaming, giảm chất lượng hình ảnh, trì hoãn precaching. Người dùng có thể tạo Whitelist để cho phép các ứng dụng sử dụng dữ liệu nền ngay cả khi Data Saver được bật.

Android 7.0 kế thừa ConnectivityManager để cung cấp cho các ứng dụng một cách lấy dữ liệu và theo dõi sự thay đổi đó. Tất cả các ứng dụng nên được kiểm tra xem đã được kích hoạt Data Saver để hạn chế tối đa dữ liệu sử dụng.

8. Vulkan API

Android 7.0 tích hợp Vulkan™ vào nền tảng – một render 3D API mới. Giống như OpenGL™ ES, Vulkan là một chuẩn mở cho đồ hoạ 3D và rendering được duy trì bởi Khronos Group. Vulkan được thiết kế từ ground up để giảm thiểu chi phí CPU trong trình điều khiển, và cho phép ứng dụng kiểm soát GPU trực tiếp hơn. Vulkan cũng cho phép chạy song song tốt hơn bằng cách cho phép nhiều luồng thực hiện công việc như xây dựng lệnh đệm cùng một lúc.

Vulkan development tools and libraries được tích hợp vào Android 7.0 bao gồm:

  • Headers
  • Validation layers (debug libraries)
  • SPIR-V shader compiler
  • SPIR-V runtime shader compilation library

Vulkan chỉ tương thích với các ứng dụng trên những thiết bị với phần cứng Vulkan-capable như Nexus 5X, Nexus 6P, Nexus Player. (API document)

9. Quick Settings Tile API

Cài đặt nhanh là một cách phổ biến và đơn giản để hiển thị các thiết lập và hành động chính một cách trực tiếp từ màn hình thông báo. Trong Android 7.0, Cài đặt nhanh đã được thiết kế để nó thực sự hữu ích và thuận tiện hơn.

Vùng cài đặt nhanh không những đã được mở rộng hơn, mà còn được thiết kế phân trang, người sử dụng có thể quẹt trái phải – trái phải để truy cập. Đồng thời màn hình cài đặt nhanh mới cũng cung cấp thao tác kéo thả cho người dùng, việc này cho phép người sử dụng có thể sắp xếp một cách hợp lý các thiết lập hay sử dụng, tạo sự thuận tiện. (Mấy cái này một số hãng như Samsung phát triển lâu rồi :)))

Đối với developer, Android 7.0 cũng cung cấp một API mới cho phép bạn xác định riêng Quick Settings của bạn để cung cấp cho người sử dụng dễ dàng điều khiển và hoạt động trong ứng dụng của bạn.

10. Number Blocking – Chặn số

Từ Android 7.0 sẽ hỗ trợ việc chặn số (Nokia 1280 cũng có) và cung cấp một API để cho các nhà cung cấp duy trì một danh sách số bị chặn. Các ứng dụng mặc định SMS, Phone, Carrier có thể đọc và ghi vào danh sách chặn. Danh sách này không được truy cập bởi các ứng dụng khác.

Bằng cách xây dựng một chuẩn cho số chặn trên nền tảng, Android cung cấp một cách phù hợp cho các ứng dụng để hỗ trợ số bị chặn trên một phạm vi rộng của thiết bị. Một số lợi ích mà ứng dụng có thể tận dụng được:

  • Số bị chặn là chặn cả gọi lẫn sms
  • Số bị chặn vẫn tồn tại khi khởi động lại hoặc qua tính năng sao lưu và phục hồi
  • Nhiều ứng dụng có thể sử dụng cùng một danh sách các số bị chặn

11. Sàng lọc cuộc gọi

Android 7.0 cho phép ứng dụng Phone mặc định có thể sàng lọc các cuộc gọi đến. Các ứng dụng Phone thực hiện điều này bằng cách thực hiện CallScreeningService mới, dịch vụ cho phép các ứng dụng Phone thực hiện một số hành động dựa trên Call.Details như là:

  • Reject cuộc gọi đến
  • Không cho phép các cuộc gọi đến lưa vào nhật ký
  • Không hiển thị thông báo cho người sử dụng khi có cuộc gọi đến

12. New Emojis – Biểu tượng cảm xúc mới

Android 7.0 bổ sung thêm biểu tượng cảm xúc và tính năng biểu tượng cảm xúc liên quan bao gồm cả biểu tượng cả xúc tone màu da và 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 thực hiện theo hướng dẫn bên dưới để có thể tận dụng lợi thế của tính năng biểu tượng cảm xúc.

  • Kiểu tra xem thiết bị có chứa một biểu tượng cảm xúc trước khi chèn nó. Để kiểm tra những biểu tượng cảm xúc đang có trên các font hệ thống, sử dụng phương thức hasGlyph(String)
  • Kiểm tra xem một biểu tượng cảm xúc có hỗ trợ bộ chọn biến thể. Bộ chọn biến thể cho phép bạn trình bày biểu tượng cảm xúc nhất định trong màu hoặc trắng đen. Trên các thiết bị di động, ứng dụng sẽ đại diện cho biểu tượng cảm xúc màu chứ không phải trắng đen.
  • Kiểm tra xem một biểu tượng cảm xúc có hỗ trợ skin tone. Android 7.0 cho phép người dùng chỉnh sửa lại màu da theo sở thích.

13. ICU4J APIs in Android

Android 7.0 cung cấp một subset của ICU4J API dưới dạng gói gói android.icu. Việc di chuyển dễ dàng, và chỉ đơn giản là thay đổi namespace từ com.java.icu sang android.icu. Nếu bạn đang sử dụng một gói ICU4J trong ứng dụng của bạn, thì hãy chuyển sang cái API android.icu, nó có thể giảm đáng kể kích thước của APK.

14. WebView

Chrome + WebView, Together

Bắt đầu từ phiên bản Chrome 51 trên Android 7.0 trở lên, Chrome APK trên thiết bị của bạn sẽ được sử dụng để cung cấp và render Android System WebViews. Cách tiếp cận này giúp cải thiện bộ nhớ sử dụng trên các thiết bị và cũng làm giảm băng thông cần thiết để giữ WebView luôn cập nhật(WebView APK sẽ không còn được cập nhật nếu như Chrome vẫn được kích hoạt).

Bạn có thể lựa chọn nhà cung cấp WebView bằng cách bật Developer Options và lựa chọn WebView implementation. Bạn có thể sử dụng biết kỳ phiên bản Chrome tương thích (Dev, Beta hoặc Stable) được cài đặt trên thiết bị của bạn hoặc một WebView độc lập hoạt động như WebView implementation.

Multiprocess

Bắt đầu từ Chrome ver51 trên Android 7.0, WebView sẽ chạy nội dung trong một sanbox tiến trình riêng rẽ khi option “Multiprocess WebView” được chọn.

Javascript run before page load

Trên Android 7.0 Javascript sẽ được reset khi một trang mới được tải. Hiện nay, Javascript được thực hiện trên các trang được tải đầu tiên trong một trường hợp WebView mới.

15. Khởi động trực tiếp – Direct Boot

Direct boot cải thiện thời gian khởi động thiết bị và cho phép ứng dụng đăng ký bị giới hạn chức năng ngay cả sau khi khi khởi động lại một cách bất ngờ. Ví dụ, một thiết bị được mã hóa khởi động lại khi người dùng đang ngủ, alarms được đăng ký, tin nhắn và cuộc gọi đến bây giờ có thể tiếp tục thông báo cho người sử dụng như bình thường. điều này cũng có nghĩa là các dịch vụ tiếp cận cũng có thể có sẵn ngay sau khi khởi động lại.

Direct boot sử dụng mã hóa theo tệp tin trong Android 7.0 để enable các chính sách mã hóa chi tiết cho cả dữ liệu hệ thống và ứng dụng. Hệ thống sử dụng một store mã hóa thiết bị để chọn dữ liệu hệ thống và ứng dụng đã đăng ký một cách rõ ràng.

Trên đây là một số cập nhật trên Android 7.0 Nougat, để tìm hiểu kỹ hơn và chi tiết hơn bạn có trể truy cập https://developer.android.com/about/versions/nougat/index.html

Nguyễn Linh

Chia sẻ để cùng tiến bộ...