Android 10 כולל תכונות ויכולות נהדרות למשתמשים ולמפתחים. במסמך הזה מוסבר מה זמין למפתחים.
כדי לקבל מידע על ממשקי ה-API, אפשר לקרוא את דוח ההבדלים בין ממשקי ה-API או לעיין בהפניית Android API ולחפש ממשקי API שנוספו ברמה 29 של API. כדאי גם לעיין בשינויים בהתנהגות ב-Android 10 (לאפליקציות שמטרגטות לרמת API 29 ולכל האפליקציות), וגם בשינויים בנושא פרטיות, כדי לקבל מידע על תחומים שבהם שינויים בפלטפורמה עשויים להשפיע על האפליקציות שלכם.
שיפורים באבטחה
ב-Android 10 נוספו כמה תכונות אבטחה, שמסוכמות בקטעים הבאים.
שיפורים בתיבות הדו-שיח של אימות ביומטרי
ב-Android 10 נוספו השיפורים הבאים לתמיכה באימות ביומטרי:
- בדיקה של יכולת האימות הביומטרי.
- מנגנון חלופי שמאפשר למשתמש לאמת את הזהות שלו באמצעות קוד האימות, קו פתיחת הנעילה או הסיסמה של המכשיר, אם הוא לא מצליח לאמת את הזהות שלו באמצעות נתונים ביומטריים.
- רמז שמורה למערכת לא לדרוש אישור מהמשתמש אחרי שהמשתמש עבר אימות באמצעות שיטה ביומטרית מרומזת. לדוגמה, אפשר להגדיר למערכת שלא יידרש אישור נוסף אחרי שהמשתמש יאומת באמצעות אימות פנים.
הפעלת קוד DEX מוטמע ישירות מ-APK
החל מ-Android 10, אפשר להגדיר לפלטפורמה להפעיל קוד DEX מוטמע ישירות מקובץ ה-APK של האפליקציה. האפשרות הזו יכולה לעזור למנוע מתקפה אם תוקף הצליח לשנות את הקוד שקומפל באופן מקומי במכשיר.
מידע נוסף זמין במאמר בנושא הפעלה של קוד DEX מוטמע ישירות מקובץ APK.
תמיכה ב-TLS 1.3
ב-Android 10 נוספה תמיכה ב-TLS 1.3. TLS 1.3 הוא עדכון משמעותי לתקן TLS שכולל שיפורים בביצועים ובאבטחה. המדדים שלנו מצביעים על כך שאפשר ליצור חיבורים מאובטחים מהר יותר ב-40% עם TLS 1.3 בהשוואה ל-TLS 1.2.
פרטים נוספים על ההטמעה של TLS 1.3 זמינים בקטע TLS בדף בנושא שינויים בהתנהגות של כל האפליקציות.
Public Conscrypt API
החל מ-Android 10, ספק האבטחה Conscrypt כולל API ציבורי לפונקציונליות של TLS.
אוסף המחלקות ב-android.net.ssl מכיל שיטות סטטיות לגישה לפונקציונליות שלא זמינה מממשקי ה-API הכלליים של javax.net.ssl. אפשר להסיק את השמות של המחלקות האלה כשמות רבים של המחלקה המתאימה javax.net.ssl. לדוגמה, קוד שפועל על מופעים של javax.net.ssl.SSLSocket יכול להשתמש במקום זאת בשיטות מ-SSLSockets.
תכונות שקשורות לקישוריות
Android 10 כולל כמה שיפורים שקשורים לרשת ולקישוריות.
API לחיבור רשת Wi-Fi
ב-Android 10 נוספה תמיכה בחיבורים ישירים מקצה לקצה. התכונה הזו מאפשרת לאפליקציה להציג למשתמש הנחיה לשנות את נקודת הגישה שהמכשיר מחובר אליה באמצעות WifiNetworkSpecifier כדי לתאר מאפיינים של רשת מבוקשת. החיבור בין העמיתים משמש למטרות שלא קשורות לאספקת רשת, כמו אתחול של הגדרות למכשירים משניים כמו Chromecast ו-Google Home.
מידע נוסף מופיע במאמר בנושא Wi-Fi Network Request API לחיבור ישיר מקצה לקצה.
Wi-Fi network suggestion API
ב-Android 10 נוספה תמיכה באפשרות להציג למשתמשים באפליקציה בקשה להתחבר לנקודת גישה ל-Wi-Fi. אתם יכולים לספק הצעות לרשת שאליה כדאי להתחבר. בסופו של דבר, הפלטפורמה תבחר את נקודת הגישה שתקבל על סמך הקלט מהאפליקציה שלכם ומאפליקציות אחרות.
מידע נוסף על התכונה הזו זמין במאמר בנושא הצעות לחיבור ל-Wi-Fi.
שיפורים במצבי ביצועים גבוהים וזמן אחזור נמוך ב-Wi-Fi
Android 10 מאפשר לספק רמז למודם הבסיסי כדי למזער את זמן האחזור.
ב-Android 10, ה-API של נעילת ה-Wi-Fi הורחב כדי לתמוך ביעילות במצב של ביצועים גבוהים ובמצב של זמן אחזור נמוך. האפשרות 'חיסכון בצריכת חשמל ב-Wi-Fi' מושבתת במצב ביצועים גבוהים ובמצב זמן טעינה קצר, ויכול להיות שתינתן אפשרות לאופטימיזציה נוספת של זמן הטעינה במצב זמן טעינה קצר, בהתאם לתמיכה במודם.
מצב השהיה נמוכה מופעל רק כשהאפליקציה שמקבלת את הנעילה פועלת בחזית והמסך פועל. מצב זמן טעינה קצר שימושי במיוחד לאפליקציות של משחקים לנייד בזמן אמת.
חיפושים מיוחדים ב-DNS resolver
ב-Android 10 נוספה תמיכה מקורית בחיפושי DNS מיוחדים באמצעות חיפושים בטקסט גלוי ומצב DNS-over-TLS. בעבר, פותר ה-DNS של הפלטפורמה תמך רק ברשומות A ו-AAAA, שמאפשרות לחפש רק את כתובות ה-IP שמשויכות לשם, אבל לא תמך בסוגים אחרים של רשומות.
DnsResolver API מספק פתרון כללי ואסינכרוני, שמאפשר לכם לחפש SRV, NAPTR וסוגים אחרים של רשומות. שימו לב: האפליקציה היא זו שמבצעת את הניתוח של התגובה.
לגבי אפליקציות שמבוססות על NDK, אפשר לעיין במאמר בנושא android_res_nsend.
חיבור קל ל-Wi-Fi
ב-Android 10 אפשר להשתמש בחיבור קל כדי להקצות אישורים של Wi-Fi למכשיר עמית, כתחליף ל-WPS שהוצא משימוש.
אפליקציות יכולות לשלב את Easy Connect בתהליך ההגדרה וההקצאה שלהן באמצעות כוונת ACTION_PROCESS_WIFI_EASY_CONNECT_URI.
מידע נוסף על התכונה הזו זמין במאמר בנושא Wi-Fi Easy Connect.
Wi-Fi Direct connection API
ב-Android 10 יש עדכונים למחלקות ה-API WifiP2pConfig ו-WifiP2pManager כדי לתמוך ביכולות של יצירת חיבור מהיר ל-Wi-Fi Direct באמצעות מידע שנקבע מראש. המידע הזה משותף באמצעות ערוץ צדדי, כמו Bluetooth או NFC.
בדוגמת הקוד הבאה אפשר לראות איך יוצרים קבוצה באמצעות מידע שנקבע מראש:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
כדי להצטרף לקבוצה באמצעות פרטי כניסה, מחליפים את manager.createGroup() בפרטים הבאים:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
ערוצים מבוססי-חיבור (CoC) ב-Bluetooth LE
Android 10 מאפשר לאפליקציה שלכם להשתמש בחיבורי BLE CoC כדי להעביר זרמי נתונים גדולים בין שני מכשירי BLE. הממשק הזה מבצע הפשטה של Bluetooth ומנגנוני קישוריות כדי לפשט את ההטמעה.
תכונות טלפוניה
Android 10 כוללת כמה שיפורים שקשורים לטלפוניה.
שיפורים באיכות השיחה
ב-Android 10 נוספה האפשרות לאסוף מידע על האיכות של שיחות IMS (תת-מערכת מולטימדיה של IP) שמתבצעות, כולל איכות השיחות אל הרשת וממנה, במכשירים שתומכים בתכונה הזו.
סינון שיחות ושיחה מזוהה
ב-Android 10, האפליקציה יכולה לזהות שיחות שלא מופיעות בפנקס הכתובות של המשתמש כשיחות ספאם פוטנציאליות, ולדחות שיחות ספאם בשם המשתמש בלי להשמיע צלצול. המידע על השיחות החסומות האלה מתועד כשיחות חסומות ביומן השיחות, כדי לספק למשתמש שקיפות רבה יותר כשהוא מפספס שיחות. השימוש ב-API הזה מבטל את הדרישה לקבלת הרשאות READ_CALL_LOG מהמשתמש כדי לספק פונקציונליות של סינון שיחות וזיהוי מתקשר.
Call redirection service API
ב-Android 10, יש שינוי באופן הטיפול בכוונות לביצוע שיחות. השידור NEW_OUTGOING_CALL הוצא משימוש והוחלף ב-API CallRedirectionService. ממשק ה-API של CallRedirectionService מספק ממשקים לשינוי שיחות יוצאות שמתבצעות על ידי פלטפורמת Android. לדוגמה, אפליקציות של צד שלישי עשויות לבטל שיחות ולהפנות אותן מחדש דרך VoIP.
שיפורים ביצירת קבצים באחסון חיצוני
בנוסף להצגת נפח אחסון ייעודי לאפליקציות, Android 10 מוסיפה את היכולות הבאות שקשורות לאחסון חיצוני:
- אתם יכולים להשתמש ב
IS_PENDINGדגל כדי להעניק לאפליקציה שלכם גישה בלעדית לקובץ מדיה בזמן שהוא נכתב לדיסק. - אם אתם יודעים איפה צריך לאחסן את הקבצים, אתם יכולים לספק למערכת רמז לגבי המקום שבו צריך לאחסן את הקבצים החדשים.
- לכל מכשיר אחסון חיצוני יש שם נפח ייחודי.
מדיה וגרפיקה
ב-Android 10 נוספו התכונות והממשקי API החדשים הבאים שקשורים למדיה ולגרפיקה:
שיתוף קלט אודיו
ב-Android 10 נוספה האפשרות לשתף את קלט האודיו בין שתי אפליקציות בו-זמנית. מידע נוסף זמין במאמר בנושא שיתוף קלט אודיו.
הקלטה של הפעלת אודיו
ב-Android 10, אפליקציה יכולה לצלם הפעלת אודיו מאפליקציות אחרות. מידע מלא זמין במאמר בנושא צילום של הפעלה.
סרגל ניווט בהתראות בסגנון מדיה
החל מ-Android 10, בהתראות של MediaStyle מוצג סרגל ניווט. בסרגל הניווט מוצגת התקדמות ההפעלה מ-PlaybackState.getPosition(), ובמקרים מסוימים אפשר להשתמש בסרגל הניווט כדי לנווט למיקום בתוכנית שמופעלת. הכללים הבאים קובעים את המראה וההתנהגות של סרגל ההתקדמות:
- סרגל ההתקדמות מופיע אם יש
MediaSessionפעיל ומשך הזמן שלו (שמצוין על ידיMediaMetadata.METADATA_KEY_DURATION) גדול מאפס. המשמעות היא שהסרגל לא מופיע בשידורים לא מוגדרים כמו שידורים חיים ושידורי רדיו. - אם בסשן מיושם
ACTION_SEEK_TO, המשתמש יכול לגרור את סרגל ההתקדמות כדי לשלוט במקומות שבהם הסרטון הופעל.
Native MIDI API
Android Native MIDI API (AMidi) מאפשר למפתחי אפליקציות לשלוח ולקבל נתוני MIDI באמצעות קוד C/C++, ומשתלב בצורה הדוקה יותר עם לוגיקת השמע/הבקרה של C/C++, ומצמצם את הצורך ב-JNI.
מידע נוסף זמין במאמר בנושא Android Native MIDI API.
שיפורים ב-MediaCodecInfo
ב-Android 10 נוספו methods ל-MediaCodecInfo שמציגים מידע נוסף על קודק.
מידע נוסף זמין במאמר בנושא קודקים של מדיה.
Thermal API
כשמכשירים מתחממים מדי, הם עשויים להגביל את המעבד (CPU) או את המעבד הגרפי (GPU), וזה יכול להשפיע על אפליקציות ומשחקים בדרכים לא צפויות. יש סיכוי גבוה יותר שיהיו בעיות באפליקציות שמשתמשות בגרפיקה מורכבת, בחישובים כבדים או בפעילות רשת מתמשכת. הבעיות האלה יכולות להשתנות בין מכשירים שונים בהתאם לערכת השבבים ולתדרי הליבה, לרמות השילוב, וגם לאריזה ולגורם הצורה של המכשיר.
ב-Android 10, אפליקציות ומשחקים יכולים להשתמש ב-Thermal API כדי לעקוב אחרי שינויים במכשיר ולנקוט פעולות לשמירה על צריכת חשמל נמוכה יותר, כדי להחזיר את הטמפרטורה למצב תקין. אפליקציות רושמות מאזין ב-PowerManager, שדרכו המערכת מדווחת על מצב תרמי שוטף בטווח שבין קל ובינוני לבין חמור, קריטי, חירום וכיבוי.
כשהמכשיר מדווח על עומס חום, האפליקציות והמשחקים יכולים לעזור בכך שהם מפסיקים פעילויות שוטפות כדי לצמצם את צריכת החשמל בדרכים שונות. לדוגמה, אפליקציות סטרימינג יכולות להקטין את הרזולוציה או את קצב העברת הנתונים או את תעבורת הרשת, אפליקציית מצלמה יכולה להשבית את הפלאש או את שיפור התמונה האינטנסיבי, משחק יכול להקטין את קצב הפריימים או את טסלציית הפוליגונים, אפליקציית מדיה יכולה להקטין את עוצמת הקול של הרמקול ואפליקציית מפות יכולה להשבית את ה-GPS.
ממשק ה-API של הטמפרטורה דורש שכבת HAL חדשה במכשיר – הוא נתמך כרגע במכשירי Pixel עם Android 10, ואנחנו עובדים עם השותפים שלנו, יצרני המכשירים, כדי להרחיב את התמיכה במערכת האקולוגית במהירות האפשרית.
מצלמה ותמונות
ב-Android 10 נוספו התכונות החדשות הבאות שקשורות למצלמה ולתמונות:
תמיכה במצלמה מונוכרומטית
היכולת להשתמש במצלמה בשחור-לבן הוצגה לראשונה ב-Android 9 (רמת API 28). ב-Android 10 נוספו כמה שיפורים לתמיכה במצלמה בשחור-לבן:
- תמיכה בפורמט סטרימינג Y8 כדי לשפר את יעילות הזיכרון.
- תמיכה בצילום DNG גולמי בשחור-לבן.
- הוספנו ספירות של מסנני צבעים (CFA) מסוג MONO ו-NIR כדי להבחין בין מצלמה רגילה בשחור-לבן לבין מצלמות אינפרה-אדום קרוב.
אתם יכולים להשתמש בתכונה הזו כדי לצלם תמונה מקורית בשחור-לבן. מכשיר עם מצלמות מרובות לוגיות עשוי להשתמש במצלמה מונוכרומטית כמצלמת משנה פיזית כדי להשיג איכות תמונה טובה יותר בתנאי תאורה חלשים.
פורמט עומק דינמי
החל מ-Android 10, מצלמות יכולות לאחסן את נתוני העומק של תמונה בקובץ נפרד, באמצעות סכימה חדשה שנקראת Dynamic Depth Format (DDF). אפליקציות יכולות לבקש גם את תמונת ה-JPG וגם את נתוני המטא של העומק שלה, ולהשתמש במידע הזה כדי להחיל טשטוש כלשהו בעיבוד שלאחר הצילום, בלי לשנות את נתוני התמונה המקוריים.
כדי לקרוא את המפרט של הפורמט הזה, אפשר לעיין במאמר בנושא פורמט עומק דינמי.
פורמט קובץ תמונה של יעילות גבוהה
פורמט HEIF (קובץ תמונה בפורמט יעילות גבוהה) הוא פורמט סטנדרטי של תמונות וסרטונים, שכולל קידוד באיכות גבוהה יותר וגודל קובץ קטן יותר בהשוואה לפורמטים אחרים של קבצים.
מידע נוסף על פורמט הקובץ זמין במאמר בנושא HEIC.
שיפורים במצלמות מרובות
ב-Android 10 יש שיפור באיחוד של כמה מצלמות למצלמה לוגית אחת, תכונה שהוצגה ב-Android 9 (רמת API 28). התוספות הבאות ל-Camera2 API:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)– מאפשרת לשאול אם אפשר להשתמש בהגדרות של הסשן שהועבר כדי ליצור סשן של צילום במצלמה.
LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID– מאפשרת לכם לקבוע את המזהה של המצלמה הפיזית הפעילה שמגבה מכשיר מצלמה לוגי. אפשר להשתמש במזהים שמוחזרים כדי לבקש זרמים לוגיים וזרמים פיזיים של מצלמות משנה, וכך לשפר את יעילות צריכת החשמל.
Accessibility services API
ב-Android 10 נוספו התכונות וממשקי ה-API החדשים הבאים לשירותי נגישות:
דגל מפתח הכניסה של AccessibilityNodeInfo
החל מ-Android 10, אפשר להתקשר אל
isTextEntryKey()
כדי לקבוע אם AccessibilityNodeInfo מסוים מייצג מקש להזנת טקסט שהוא חלק ממקלדת או מלוח מקשים.
תיבת דו-שיח בנושא נגישות עם קורא מסך קולי
במקרים שבהם המשתמשים צריכים להשתמש בקיצור הדרך לנגישות כדי להפעיל שירות נגישות, מערכת Android 10 מאפשרת להציג את תיבת הדו-שיח עם הנחיה להמרת טקסט לדיבור אם השירות מבקש זאת.
קיצור דרך לנגישות כשהניווט באמצעות תנועות מופעל
כשהתכונה ניווט באמצעות תנועות מופעלת ב-Android 10, כפתור הנגישות לא מוצג ולא ניתן לבחור בו. כדי לגשת לתפריט שירותי הנגישות, המשתמשים צריכים לבצע אחת מהמחוות הבאות:
- מחליקים למעלה עם שתי אצבעות.
- מחליקים למעלה עם שתי אצבעות וממשיכים להחזיק.
קיצור דרך לנגישות במקלדות פיזיות
ב-Android 10, המשתמשים יכולים להפעיל את קיצור הדרך לנגישות במקלדת פיזית על ידי לחיצה על Control+Alt+Z.
שיפור בבקר של המקלדת הווירטואלית
ב-Android 10, שירותי נגישות יכולים לבקש להציג את המקלדת הווירטואלית גם כשהמכשיר מזהה שמחוברת אליו מקלדת פיזית. המשתמשים יכולים לשנות את ההתנהגות הזו.
הגדרת פסק זמן לנגישות על ידי המשתמש
ב-Android 10 הוצג ה-API
getRecommendedTimeoutMillis(). ה-method הזו מספקת תמיכה בערכי זמן קצובים שהמשתמשים מגדירים לרכיבי ממשק משתמש אינטראקטיביים ולא אינטראקטיביים. הערך המוחזר מושפע מהעדפות המשתמש ומממשקי API של שירותי נגישות.
שיפורים במילוי האוטומטי
Android 10 כולל את השיפורים הבאים בשירות המילוי האוטומטי.
בקשות למילוי אוטומטי שקשורות לתאימות
אפשר להשתמש בדגל FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST כדי לקבוע אם בקשה למילוי אוטומטי נוצרה באמצעות מצב תאימות.
שמירת שם משתמש וסיסמה בו-זמנית
אפשר לתמוך במקרים שבהם אפליקציה משתמשת בכמה פעילויות כדי להציג שם משתמש, סיסמה ושדות אחרים באמצעות הדגל SaveInfo.FLAG_DELAY_SAVE.
אינטראקציה של משתמשים עם ממשק המשתמש של השמירה
כדי להציג או להסתיר שדה סיסמה בתיבת דו-שיח לשמירה, צריך להגדיר מאזין פעולות בתיבת הדו-שיח ולשנות את ההגדרה של הרשאות הגישה לתצוגה המרוחקת של הסיסמה.
תמיכה בעדכון של מערכי נתונים
המילוי האוטומטי יכול לעדכן סיסמאות קיימות. לדוגמה, אם משתמש כבר שמר סיסמה, והוא שומר סיסמה חדשה, התכונה 'מילוי אוטומטי' תציע למשתמש לעדכן את הסיסמה הקיימת במקום לשמור סיסמה חדשה.
שיפורים בסיווג השדות
Android 10 כוללת את השיפורים הבאים ב-Field Classification API.
UserData.Builder constructor
הקונסטרוקטור
UserData.Builder
השתנה כדי להתאים טוב יותר לתבנית Builder.
איך ממפים ערך לכמה סוגים של מזהי קטגוריות
כשמשתמשים ב-UserData.Builder ב-Android 10, אפשר עכשיו למפות ערך לכמה סוגים של מזהי קטגוריות. בגרסאות קודמות, אם ערך נוסף יותר מפעם אחת, נוצר חריג.
תמיכה משופרת במספרי כרטיסי אשראי
סיווג השדות יכול לזהות עכשיו מספרים בני ארבע ספרות כארבע הספרות האחרונות של מספר כרטיס אשראי.
תמיכה בסיווג שדות ספציפי לאפליקציה
ב-Android 10 נוסף
FillResponse.setUserData(),
שמאפשר להגדיר נתוני משתמש ספציפיים לאפליקציה למשך הסשן.
כך שירות המילוי האוטומטי יכול לזהות סוגים של שדות עם תוכן ספציפי לאפליקציה.
ממשק משתמש ופקדי מערכת
Android 10 כוללת את השיפורים הבאים בממשק המשתמש:
תמיכה במכסות של JVMTI PopFrame
ב-Android 10 נוספה תמיכה ביכולת can_pop_frames בהטמעה של Android JVMTI. במהלך ניפוי הבאגים, התכונה הזו מאפשרת להריץ מחדש פונקציות אחרי השהיה בנקודת עצירה, ולשנות את המשתנים המקומיים, המשתנים הגלובליים או את ההטמעה של פונקציה. מידע נוסף זמין בדף העזרה של Oracle בנושא Pop Frame.
Surface control API
Android 10 מספק API SurfaceControl לגישה ברמה נמוכה ל-compositor של המערכת (SurfaceFlinger). לרוב המשתמשים, SurfaceView היא הדרך הנכונה להשתמש ב-compositor. ה-API של SurfaceControl יכול להיות שימושי במקרים מסוימים, למשל:
- סנכרון של כמה פלטפורמות
- הטמעה של פלטפורמות בתהליכים שונים
- ניהול מחזור חיים ברמה נמוכה יותר
SurfaceControl API זמין גם ב-SDK וגם ב-NDK bindings.
ההטמעה של NDK כוללת API להחלפה ידנית של מאגרי נתונים עם מנהל ההרכבה. האפשרות הזו מספקת פתרון חלופי למשתמשים שנתקלו במגבלות של BufferQueue.
זיהוי של רכיב רינדור שנתקע ב-WebView
ב-Android 10 הוצגה המחלקה המופשטת WebViewRenderProcessClient, שאפליקציות יכולות להשתמש בה כדי לזהות אם WebView הפסיק להגיב. כדי להשתמש במחלקה הזו:
- מגדירים מחלקת משנה משלכם ומטמיעים את השיטות
onRenderProcessResponsive()ו-onRenderProcessUnresponsive(). - מצרפים מופע של
WebViewRenderProcessClientלאובייקטWebViewאחד או יותר. - אם
WebViewלא מגיב, המערכת קוראת לשיטהonRenderProcessUnresponsive()של הלקוח, ומעבירה אתWebViewואתWebViewRenderProcess. (אםWebViewהוא תהליך יחיד, הפרמטרWebViewRenderProcessהוא null). האפליקציה יכולה לבצע פעולה מתאימה, כמו הצגת תיבת דו-שיח למשתמש עם שאלה אם הוא רוצה להפסיק את תהליך הרינדור.
אם WebView לא מגיב, המערכת מתקשרת אל onRenderProcessUnresponsive() מעת לעת (לא יותר מפעם אחת כל חמש שניות), אבל לא מבצעת פעולה אחרת.
אם WebView יחזור להגיב, המערכת תתקשר אל onRenderProcessResponsive() רק פעם אחת.
חלוניות הגדרות
ב-Android 10 הוצג Settings Panels, API שמאפשר לאפליקציות להציג הגדרות למשתמשים בהקשר של האפליקציה. כך המשתמשים לא צריכים להיכנס להגדרות כדי לשנות דברים כמו NFC או נתונים ניידים כדי להשתמש באפליקציה.
לדוגמה, נניח שמשתמש פותח דפדפן אינטרנט כשהמכשיר שלו במצב טיסה. לפני Android 10, האפליקציה יכלה להציג רק הודעה כללית שבה המשתמש מתבקש לפתוח את ההגדרות כדי לשחזר את הקישוריות. ב-Android 10, אפליקציית הדפדפן יכולה להציג חלונית מוטבעת עם הגדרות חיבור חשובות, כמו מצב טיסה, Wi-Fi (כולל רשתות קרובות) וחבילת גלישה. החלונית הזו מאפשרת למשתמשים לשחזר את הקישוריות בלי לצאת מהאפליקציה.
כדי להציג חלונית הגדרות, מפעילים intent עם אחת מהפעולות הבאות של Settings.Panel:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
הערך settings_panel_type יכול להיות אחד מהבאים:
ACTION_INTERNET_CONNECTIVITY- הגדרות שקשורות לחיבור לאינטרנט, כמו מצב טיסה, Wi-Fi וחבילת גלישה.
ACTION_WIFI- הגדרות ה-Wi-Fi מוצגות, אבל לא הגדרות הקישוריות האחרות. האפשרות הזו שימושית לאפליקציות שצריכות חיבור Wi-Fi כדי לבצע העלאות או הורדות גדולות.
ACTION_NFC- מוצגות כל ההגדרות שקשורות לתקשורת מטווח קצר (NFC).
ACTION_VOLUME- הצגת הגדרות עוצמת הקול לכל זרמי האודיו.
שיפורים בשיתוף
ב-Android 10 יש כמה שיפורים בשיתוף:
Sharing Shortcuts API
Sharing Shortcuts API מחליף את Direct Share APIs.
במקום לאחזר תוצאות כתגובה לפי דרישה, ה-Sharing Shortcuts API מאפשר לאפליקציות לפרסם מראש יעדים של שיתוף ישיר. ככה פועל ShortcutManager.
מכיוון שממשקי ה-API דומים, הרחבנו את ShortcutInfo
API כדי להקל על השימוש בשתי התכונות. באמצעות Sharing Shortcuts API, אפשר להקצות ישירות קטגוריות או אנשים ליעד שיתוף. יעדי השיתוף נשמרים במערכת
עד שאותה אפליקציה מעדכנת אותם או עד שהאפליקציה מוסרת.
המנגנון הישן של השיתוף הישיר עדיין פועל, אבל לאפליקציות שמשתמשות בו יש עדיפות נמוכה יותר מאפליקציות שמשתמשות ב-Sharing Shortcuts API.
ShortcutInfo.Builder
נוספו שיפורים ל-methods כדי לספק מידע נוסף על יעד השיתוף.
יעדים לשיתוף ישיר
אפשר לפרסם קיצור דרך דינמי כיעד לשיתוף ישיר. איך מפרסמים יעדים לשיתוף ישיר
ShortcutManagerCompat
הוא AndroidX API חדש שמספק תאימות לאחור עם DirectShare API הישן. זו הדרך המועדפת לפרסום של מטרות שיתוף.
תצוגה מקדימה של טקסט
כשמשתפים תוכן טקסט מאפליקציה, אפשר להציג תצוגה מקדימה של התוכן בממשק המשתמש של הקובץ לשיתוף.
איך מוסיפים תצוגות מקדימות של טקסט עשיר
מידע נוסף
מידע נוסף על שיתוף נתונים בין אפליקציות זמין במאמרים שליחת נתונים פשוטים לאפליקציות אחרות וקבלת נתונים פשוטים מאפליקציות אחרות
עיצוב כהה
ב-Android 10 יש עיצוב כהה שחל על ממשק המשתמש של מערכת Android ועל אפליקציות שפועלות במכשיר. מידע מלא זמין במאמר בנושא עיצוב כהה.
סוגים של שירותים שפועלים בחזית
ב-Android 10 הוצג מאפיין המניפסט של XML foregroundServiceType, שכוללים בהגדרה של כמה שירותים ספציפיים. אפשר להקצות כמה סוגים של שירותים שפועלים בחזית לשירות מסוים, אבל זה לא מומלץ.
בטבלה הבאה מוצגים הסוגים השונים של שירותים שפועלים בחזית והשירותים שבהם כדאי להצהיר על סוג ספציפי:
| סוג השירות שפועל בחזית | תרחיש שימוש לדוגמה בשירות שצריך להצהיר על הסוג הזה |
|---|---|
connectedDevice
| מעקב אחרי צמיד כושר |
dataSync
| הורדת קבצים מרשת |
location
| המשך פעולה שהמשתמש יזם |
mediaPlayback
| הפעלת ספר אודיו, פודקאסט או מוזיקה |
mediaProjection
| הקלטת סרטון של תצוגת המכשיר למשך זמן קצר |
phoneCall
| איך מטפלים בשיחה פעילה |
Kotlin
Android 10 כולל את העדכונים הבאים לפיתוח ב-Kotlin.
אנוטציות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) ב-libcore APIs
Android 10 משפר את הכיסוי של הערות לגבי מאפיין המציין אם ערך יכול להיות ריק (nullability) ב-SDK עבור ממשקי libcore API. האנוטציות האלה מאפשרות למפתחי אפליקציות שמשתמשים בניתוח של מאפיין המציין אם ערך יכול להיות ריק (nullability) ב-Kotlin או ב-Java ב-Android Studio לקבל מידע על ערכי null כשהם מבצעים אינטראקציה עם ממשקי ה-API האלה.
בדרך כלל, הפרות של חוזה ה-nullability ב-Kotlin מובילות לשגיאות קומפילציה. כדי להבטיח תאימות לקוד הקיים, נוספו רק ההערות @RecentlyNullable ו-@RecentlyNonNull. המשמעות היא שהפרות של כללי ה-nullability מובילות לאזהרות במקום לשגיאות.
בנוסף, כל ההערות @RecentlyNullable או @RecentlyNonNull שנוספו ב-Android 9 משתנות ל-@Nullable ול-@NonNull, בהתאמה.
המשמעות היא שב-Android 10 ואילך, הפרות של nullability מובילות לשגיאות במקום לאזהרות.
מידע נוסף על שינויים באנוטציות זמין במאמר Android Pie SDK is now more Kotlin-friendly ב-Android Developers Blog.
NDK
Android 10 כוללת את השינויים הבאים ב-NDK.
שיפור בניפוי באגים של בעלות על מתאר קובץ
ב-Android 10 נוספה fdsan, שעוזרת למצוא ולתקן בעיות בבעלות על מתאר קובץ בקלות רבה יותר.
באגים שקשורים לטיפול שגוי בבעלות על מתאר קובץ, שבדרך כלל מתבטאים בשימוש אחרי סגירה ובסגירה כפולה, דומים לבאגים של הקצאת זיכרון מסוג שימוש אחרי שחרור ושחרור כפול, אבל בדרך כלל קשה הרבה יותר לאבחן ולתקן אותם. הכלי fdsan מנסה לזהות או למנוע ניהול שגוי של מתאר קובץ על ידי אכיפת בעלות על מתאר קובץ.
למידע נוסף על קריסות שקשורות לבעיות האלה, אפשר לעיין במאמר בנושא שגיאה שזוהתה על ידי fdsan. מידע נוסף על fdsan זמין בדף Googlesource בנושא fdsan.
ELF TLS
אפליקציות שנוצרו באמצעות NDK עם רמת API מינימלית של 29 יכולות להשתמש ב-ELF TLS
במקום ב-emutls. נוספה תמיכה במקשרים דינמיים וסטטיים כדי לתמוך בשיטה הזו לטיפול במשתנים מקומיים של שרשור.
באפליקציות שנוצרו לרמת API 28 ומטה, הוטמעו שיפורים ב-libgcc/compiler-rt כדי לעקוף כמה בעיות ב-emutls.
מידע נוסף זמין במאמר שינויים ב-Android למפתחי NDK.
זמן ריצה
Android 10 כוללת את השינוי הבא בזמן הריצה.
הפעלת מנגנון איסוף זבל על סמך mallinfo
כשמפנים הפניות לאובייקטים גדולים ב-heap של C++ מאובייקטים קטנים של Java בפלטפורמה, אפשר בדרך כלל לאחזר את האובייקטים של C++ רק כשמבצעים איסוף של האובייקט של Java, למשל, כשמבצעים סגירה. בגרסאות קודמות, הפלטפורמה העריכה את הגדלים של הרבה אובייקטים של C++ שמשויכים לאובייקטים של Java. ההערכה הזו לא תמיד הייתה מדויקת, ולפעמים היא גרמה לעלייה משמעותית בשימוש בזיכרון, כי הפלטפורמה לא הצליחה לבצע איסוף אשפה כשהיה צריך.
ב-Android 10, אוסף האשפה (GC) עוקב אחרי הגודל הכולל של ה-heap שהוקצה על ידי המערכת malloc(), כדי להבטיח שהקצאות גדולות של malloc() תמיד ייכללו בחישובים שמפעילים את ה-GC. יכול להיות שבאפליקציות שמשלבות הקצאות גדולות של C++ עם הרצת Java תהיה עלייה בתדירות של מנגנון איסוף זבל. יכול להיות שבאפליקציות אחרות תהיה ירידה קלה.
בדיקה וניפוי באגים
Android 10 כולל את השיפורים הבאים לבדיקה ולניפוי באגים.
שיפורים במעקב אחר המערכת במכשיר
החל מ-Android 10, אפשר לציין מגבלות לגודל ולמשך של מעקב כשמבצעים מעקב מערכת במכשיר. כשמציינים אחד מהערכים האלה, המערכת מבצעת מעקב ארוך, ובמהלך תיעוד המעקב היא מעתיקה מעת לעת את מאגר המעקב לקובץ היעד. המעקב מסתיים כשהגודל או משך הזמן שציינתם מגיעים למגבלות.
הפרמטרים הנוספים האלה מאפשרים לבדוק תרחישי שימוש שונים מאלה שאפשר לבדוק באמצעות מעקב רגיל. לדוגמה, יכול להיות שאתם מאבחנים באג בביצועים שמתרחש רק אחרי שהאפליקציה פועלת במשך תקופה ארוכה. במקרה כזה, אפשר להקליט טרייס ארוך במשך יום שלם, ואז לנתח את מתזמן ה-CPU, את הפעילות בדיסק, את השרשורים של האפליקציה ונתונים אחרים בדוח כדי לנסות להבין מה גרם לבאג.
ב-Android 10 ואילך, קובצי המעקב נשמרים בפורמט שאפשר לפתוח באמצעות Perfetto, פרויקט קוד פתוח למדידת ביצועים ולמעקב. אפשר להמיר קובצי מעקב של Perfetto לפורמט Systrace.
שיפורים ב-TextClassifier
ב-Android 10 יש פונקציונליות נוספת לסיווג טקסט בממשק TextClassifier.
זיהוי שפה
ה-method detectLanguage() פועלת באופן דומה לשיטות סיווג קיימות. היא מקבלת אובייקט TextLanguage.Request ומחזירה אובייקט TextLanguage.
אובייקטים מסוג TextLanguage מורכבים מרשימה של זוגות מסודרים. כל זוג מכיל לוקאל וציון רמת ביטחון תואם לסיווג.
הצעות לפעולות בשיחה
השיטה
suggestConversationActions()
פועלת באופן דומה לשיטות סיווג קיימות. היא מקבלת אובייקט ConversationActions.Request ומחזירה אובייקט ConversationActions.
אובייקטים של ConversationActions
מורכבים מרשימה של
אובייקטים של ConversationAction. כל אובייקט ConversationAction כולל פעולה אפשרית מוצעת וציון הוודאות שלה.
תשובות חכמות/פעולות חכמות בהתראות
ב-Android 9 נוספה האפשרות להציג הצעות לתשובות בהתראה. ב-Android 10, התכונה הזו הורחבה כך שאפשר לכלול הצעות לפעולות שמבוססות על כוונות. בנוסף, הפלטפורמה יכולה ליצור את ההצעות האלה באופן אוטומטי. אפליקציות עדיין יכולות לספק הצעות משלהן או לבטל את ההצטרפות להצעות שנוצרות על ידי המערכת.ממשק ה-API שמשמש ליצירת התשובות האלה הוא חלק מ-TextClassifier, והוא נחשף ישירות למפתחים ב-Android 10.
מידע נוסף מופיע בקטע על השיפורים ב-TextClassifier.
אם האפליקציה מספקת הצעות משלה, הפלטפורמה לא יוצרת הצעות אוטומטיות. אם לא רוצים שההתראות מהאפליקציה יציגו הצעות לתשובות או לפעולות, אפשר להשבית את ההצעות לתשובות ולפעולות שנוצרות על ידי המערכת באמצעות setAllowGeneratedReplies() ו-setAllowSystemGeneratedContextualActions().