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 כולל כמה שיפורים שקשורים לרשת ולקישוריות.
Wi-Fi network connection API
ב-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 בתהליך ההגדרה וההקצאה שלהן באמצעות
ה-intent
ACTION_PROCESS_WIFI_EASY_CONNECT_URI.
מידע נוסף על התכונה הזו זמין במאמר בנושא חיבור קל ל-Wi-Fi.
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 נוספה האפשרות לאסוף מידע על האיכות של שיחות מתמשכות ב-IP Multimedia Subsystem (IMS), כולל איכות השיחה אל הרשת וממנה, במכשירים שתומכים בתכונה הזו.
סינון שיחות ושיחה מזוהה
ב-Android 10, האפליקציה יכולה לזהות שיחות שלא מופיעות בפנקס הכתובות של המשתמש כשיחות ספאם פוטנציאליות, ולדחות שיחות ספאם בשם המשתמש בלי להשמיע צליל. המידע על השיחות החסומות האלה מתועד כשיחות חסומות ביומן השיחות, כדי לספק למשתמש שקיפות רבה יותר כשהוא מפספס שיחות. השימוש ב-API הזה מבטל את הצורך לקבל READ_CALL_LOG הרשאות מהמשתמש כדי לספק פונקציונליות של סינון שיחות וזיהוי מתקשר.
Call redirection service API
ב-Android 10, יש שינוי באופן הטיפול בכוונות לביצוע שיחות. השידור NEW_OUTGOING_CALL הוצא משימוש והוחלף ב-API CallRedirectionService. CallRedirectionService API מספק ממשקים לשינוי שיחות יוצאות שמתבצעות על ידי פלטפורמת 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
כשמכשירים מתחממים מדי, הם עשויים להגביל את מהירות המעבד או המעבד הגרפי, וזה יכול להשפיע על אפליקציות ומשחקים בצורה לא צפויה. יש סיכוי גבוה יותר שאפליקציות שמשתמשות בגרפיקה מורכבת, בחישובים כבדים או בפעילות רשת מתמשכת ייתקלו בבעיות. הבעיות האלה עשויות להיות שונות במכשירים שונים, בהתאם לערכת השבבים ולתדרי הליבה, לרמות השילוב, וגם לאריזה ולגורם הצורה של המכשיר.
ב-Android 10, אפליקציות ומשחקים יכולים להשתמש ב-Thermal API כדי לעקוב אחרי שינויים במכשיר ולנקוט פעולות לשמירה על צריכת חשמל נמוכה יותר, כדי להחזיר את הטמפרטורה למצב תקין. אפליקציות רושמות מאזין ב-PowerManager, שדרכו המערכת מדווחת על מצב תרמי שוטף בטווח שבין קל ובינוני לבין חמור, קריטי, מקרה חירום וכיבוי.
כשהמכשיר מדווח על עומס חום, אפליקציות ומשחקים יכולים לעזור בכך שהם מפסיקים פעילויות שוטפות כדי לצמצם את צריכת החשמל בדרכים שונות. לדוגמה, אפליקציות סטרימינג יכולות להקטין את הרזולוציה או את קצב העברת הנתונים או את תעבורת הרשת, אפליקציית מצלמה יכולה להשבית את הפלאש או את שיפור התמונה האינטנסיבי, משחק יכול להקטין את קצב הפריימים או את טסלציית הפוליגונים, אפליקציית מדיה יכולה להקטין את עוצמת הקול של הרמקול, ואפליקציית מפות יכולה להשבית את ה-GPS.
ממשק ה-API של Thermal דורש שכבת HAL חדשה במכשיר – הוא נתמך כרגע במכשירי Pixel עם Android 10, ואנחנו עובדים עם השותפים שלנו, יצרני המכשירים, כדי להרחיב את התמיכה במערכת האקולוגית במהירות האפשרית.
מצלמה ותמונות
ב-Android 10 הוספנו את התכונות החדשות הבאות שקשורות למצלמה ולתמונות:
תמיכה במצלמה מונוכרומטית
היכולת להשתמש במצלמה בשחור-לבן הוצגה לראשונה ב-Android 9 (API ברמה 28). ב-Android 10 נוספו כמה שיפורים לתמיכה במצלמה בשחור-לבן:
- תמיכה בפורמט סטרימינג Y8 לשיפור היעילות של הזיכרון.
- תמיכה בצילום DNG גולמי בשחור-לבן.
- הוספנו ספירות של מסנני צבעים (CFA) מסוג MONO ו-NIR כדי להבחין בין מצלמה רגילה בשחור-לבן לבין מצלמות אינפרה-אדום קרוב.
אפשר להשתמש בתכונה הזו כדי לצלם תמונה מקורית בשחור-לבן. מכשיר עם מצלמה לוגית מרובת עדשות עשוי להשתמש במצלמה מונוכרומטית כמצלמת משנה פיזית כדי להשיג איכות תמונה טובה יותר בתנאי תאורה חלשים.
פורמט עומק דינמי
החל מ-Android 10, מצלמות יכולות לאחסן את נתוני העומק של תמונה בקובץ נפרד, באמצעות סכימה חדשה שנקראת Dynamic Depth Format (DDF). אפליקציות יכולות לבקש גם את תמונת ה-JPG וגם את נתוני המטא של העומק שלה, ולהשתמש במידע הזה כדי להחיל טשטוש כלשהו בעיבוד שלאחר הצילום, בלי לשנות את נתוני התמונה המקוריים.
כדי לקרוא את המפרט של הפורמט הזה, אפשר לעיין במאמר בנושא פורמט עומק דינמי.
פורמט קובץ תמונה של יעילות גבוהה
פורמט High Efficiency Image File (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 הוצג
getRecommendedTimeoutMillis()
API. השיטה הזו מספקת תמיכה בערכי זמן קצובים שהמשתמשים מגדירים עבור רכיבי ממשק משתמש אינטראקטיביים ולא אינטראקטיביים. ערך ההחזרה מושפע מהעדפות המשתמש ומממשקי 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 לגישה ברמה נמוכה למערכת ההרכבה (SurfaceFlinger). לרוב המשתמשים, SurfaceView היא הדרך הנכונה להשתמש במערכת ההרכבה. ה-API SurfaceControl יכול להיות שימושי במקרים מסוימים, למשל:
- סנכרון של כמה פלטפורמות
- הטמעה של משטחים בתהליכים שונים
- ניהול מחזור חיים ברמה נמוכה יותר
ממשק SurfaceControl API זמין גם ב-SDK וגם ב-NDK bindings.
ההטמעה של NDK כוללת API להחלפה ידנית של מאגרי נתונים עם מנהל ההרכבה. האפשרות הזו מספקת פתרון חלופי למשתמשים שנתקלו במגבלות של BufferQueue.
זיהוי של רכיב rendering שנתקע ב-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.
הערות לגבי אפשרות של ערך null ב-libcore APIs
Android 10 משפר את הכיסוי של הערות לגבי אפשרות קבלת ערך null ב-SDK של ממשקי libcore API. ההערות האלה מאפשרות למפתחי אפליקציות שמשתמשים בניתוח של ערכי null ב-Kotlin או ב-Java ב-Android Studio לקבל מידע על ערכי null כשהם מבצעים אינטראקציה עם ממשקי ה-API האלה.
בדרך כלל, הפרות של חוזה ה-nullability ב-Kotlin מובילות לשגיאות קומפילציה. כדי להבטיח תאימות לקוד הקיים, נוספו רק ההערות @RecentlyNullable ו-@RecentlyNonNull. המשמעות היא שהפרות של כללי ה-nullability יגרמו להצגת אזהרות במקום שגיאות.
בנוסף, כל ההערות @RecentlyNullable או @RecentlyNonNull שנוספו ב-Android 9 משתנות ל-@Nullable ול-@NonNull, בהתאמה.
המשמעות היא שב-Android 10 ואילך, הפרות של אפשרות קבלת ערך null מובילות לשגיאות במקום לאזהרות.
מידע נוסף על שינויים בהערות זמין במאמר Android Pie SDK is now more Kotlin-friendly בבלוג למפתחי Android.
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 כוללת את השינוי הבא בזמן הריצה.
הפעלת garbage collection על סמך mallinfo
כשמפנים הפניות לאובייקטים גדולים ב-heap של C++ מאובייקטים קטנים של Java בפלטפורמה, אפשר בדרך כלל לשחזר את האובייקטים של C++ רק כשמבצעים איסוף של האובייקט של Java, למשל, כשמבצעים סופיות. בגרסאות קודמות, הפלטפורמה העריכה את הגדלים של הרבה אובייקטים של C++ שמשויכים לאובייקטים של Java. ההערכה הזו לא תמיד הייתה מדויקת, ולפעמים היא גרמה לעלייה משמעותית בשימוש בזיכרון, כי הפלטפורמה לא הצליחה לבצע איסוף אשפה כשהיה צריך.
ב-Android 10, אוסף הזבל (GC) עוקב אחרי הגודל הכולל של הערימה שהוקצתה על ידי המערכת malloc(), כדי לוודא שהקצאות גדולות של malloc() תמיד נכללות בחישובים שמפעילים את אוסף הזבל. יכול להיות שבאפליקציות שמשלבות הקצאות גדולות של C++ עם ביצוע Java תהיה עלייה בתדירות של איסוף האשפה. יכול להיות שבאפליקציות אחרות תהיה ירידה קלה.
בדיקה וניפוי באגים
Android 10 כולל את השיפורים הבאים לבדיקה ולניפוי באגים.
שיפורים במעקב אחר המערכת במכשיר
החל מ-Android 10, אפשר לציין מגבלות לגודל ולמשך של מעקב כשמבצעים מעקב מערכת במכשיר. כשמציינים את אחד מהערכים האלה, המערכת מבצעת מעקב ארוך, ובמהלך תיעוד המעקב היא מעתיקה מעת לעת את מאגר המעקב לקובץ היעד. המעקב מסתיים כשהגודל או משך הזמן שציינתם מגיעים למגבלות.
אפשר להשתמש בפרמטרים הנוספים האלה כדי לבדוק תרחישי שימוש שונים מאלה שבודקים באמצעות מעקב רגיל. לדוגמה, יכול להיות שאתם מאבחנים באג בביצועים שמתרחש רק אחרי שהאפליקציה פועלת במשך תקופה ארוכה. במקרה כזה, אפשר להקליט טרייס ארוך במשך יום שלם, ואז לנתח את מתזמן המעבד, פעילות הדיסק, השרשורים של האפליקציה ונתונים אחרים בדוח כדי לנסות להבין מה גרם לבאג.
ב-Android 10 ואילך, קובצי המעקב נשמרים בפורמט שאפשר לפתוח באמצעות Perfetto, פרויקט קוד פתוח למעקב אחר ביצועים. אפשר להמיר קובצי מעקב של Perfetto לפורמט Systrace.
שיפורים ב-TextClassifier
ב-Android 10 יש פונקציונליות נוספת של סיווג טקסט בממשק TextClassifier.
זיהוי שפה
השיטה detectLanguage() פועלת באופן דומה לשיטות סיווג קיימות. היא מקבלת אובייקט TextLanguage.Request ומחזירה אובייקט TextLanguage.
אובייקטים של TextLanguage מורכבים מרשימה של זוגות מסודרים. כל זוג מכיל לוקאל וציון מהימנות תואם לסיווג.
הצעות לפעולות בשיחה
השיטה
suggestConversationActions()
פועלת באופן דומה לשיטות סיווג קיימות. היא מקבלת אובייקט ConversationActions.Request ומחזירה אובייקט ConversationActions.
אובייקטים של ConversationActions
מורכבים מרשימה של אובייקטים של ConversationAction. כל אובייקט ConversationAction כולל פעולה מוצעת פוטנציאלית וציון הוודאות שלה.
תשובות מהירות/פעולות חכמות בהתראות
ב-Android 9 נוספה האפשרות להציג הצעות לתשובות בהתראה. ב-Android 10, האפשרות הזו הורחבה וכוללת הצעות לפעולות שמבוססות על כוונות. בנוסף, הפלטפורמה יכולה ליצור את ההצעות האלה באופן אוטומטי. אפליקציות עדיין יכולות לספק הצעות משלהן, או לבחור שלא להציג הצעות שנוצרות על ידי המערכת.ממשק ה-API שמשמש ליצירת התשובות האלה הוא חלק מ-TextClassifier, והוא נחשף ישירות למפתחים ב-Android 10.
מידע נוסף זמין בקטע על השיפורים ב-TextClassifier.
אם האפליקציה מספקת הצעות משלה, הפלטפורמה לא יוצרת הצעות אוטומטיות. אם לא רוצים שההתראות של האפליקציה יציגו הצעות לתשובות או לפעולות, אפשר להשבית את התשובות והפעולות שנוצרות על ידי המערכת באמצעות setAllowGeneratedReplies() ו-setAllowSystemGeneratedContextualActions().