Android 10 כולל תכונות ויכולות נהדרות למשתמשים ולמפתחים. במסמך הזה מוסבר מה זמין למפתחים.
כדי לקבל מידע על ממשקי ה-API, אפשר לקרוא את דוח ההבדלים בין ממשקי ה-API או לעיין בהפניית Android API ולחפש ממשקי API שנוספו ברמת API 29. כדאי גם לעיין בשינויים בהתנהגות של 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 בתהליך ההגדרה וההקצאה שלהן באמצעות כוונת 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
. ממשקי ה-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
כשמכשירים מתחממים מדי, הם עשויים להגביל את מהירות המעבד או המעבד הגרפי, וזה יכול להשפיע על אפליקציות ומשחקים בצורה לא צפויה. באפליקציות שמשתמשות בגרפיקה מורכבת, בחישובים כבדים או בפעילות רשת מתמשכת, יש סיכוי גבוה יותר להיתקל בבעיות. הבעיות האלה עשויות להשתנות בין מכשירים שונים בהתאם לערכת השבבים ולתדרי הליבה, לרמות השילוב, וגם לאריזה ולגורם הצורה של המכשיר.
ב-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.
ה-constructor של UserData.Builder
הקונסטרוקטור
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
.
זיהוי של רכיב 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.
במקום לאחזר תוצאות באופן ריאקטיבי לפי דרישה, ה-API של קיצורי דרך לשיתוף מאפשר לאפליקציות לפרסם מראש יעדים לשיתוף ישיר. כך פועל ShortcutManager
.
מכיוון שממשקי ה-API דומים, הרחבנו את ShortcutInfo
API כדי להקל על השימוש בשתי התכונות. באמצעות ה-API של קיצורי דרך לשיתוף, אפשר להקצות ישירות קטגוריות או אנשים ליעד שיתוף. יעדי השיתוף נשמרים במערכת
עד שהאפליקציה שעדכנה אותם מעדכנת אותם שוב או עד שהאפליקציה מוסרת.
המנגנון הישן יותר של שיתוף ישיר עדיין פועל, אבל לאפליקציות שמשתמשות בו יש עדיפות נמוכה יותר מאשר לאפליקציות שמשתמשות ב-Sharing Shortcuts API.
ShortcutInfo.Builder
הוספנו שיטות ושיפרנו שיטות קיימות כדי לספק מידע נוסף על יעד השיתוף.
יעדים לשיתוף ישיר
אפשר לפרסם קיצור דרך דינמי כיעד לשיתוף ישיר. איך מפרסמים יעדים לשיתוף ישיר
ShortcutManagerCompat
הוא AndroidX API חדש שמספק תאימות לאחור עם DirectShare API הישן. זו הדרך המועדפת לפרסום מטרות שיתוף.
תצוגה מקדימה של טקסט
כשמשתפים תוכן טקסט מאפליקציה, אפשר להציג תצוגה מקדימה של התוכן בממשק של גיליון השיתוף.
איך מוסיפים תצוגות מקדימות של טקסט עשיר
מידע נוסף
מידע נוסף על שיתוף נתונים בין אפליקציות זמין במאמרים שליחת נתונים פשוטים לאפליקציות אחרות וקבלת נתונים פשוטים מאפליקציות אחרות
עיצוב כהה
ב-Android 10 יש עיצוב כהה שחל על ממשק המשתמש של מערכת Android ועל אפליקציות שפועלות במכשיר. למידע מלא, אפשר לעיין במאמר בנושא עיצוב כהה.
סוגים של שירותים שפועלים בחזית
ב-Android 10 הוצג מאפיין המניפסט של XML foregroundServiceType
, שכוללים בהגדרה של כמה שירותים ספציפיים. אפשר להקצות כמה סוגים של שירותים שפועלים בחזית לשירות מסוים, אבל זה לא מומלץ.
בטבלה הבאה מוצגים הסוגים השונים של שירותים שפועלים בחזית והשירותים שבהם כדאי להצהיר על סוג ספציפי:
סוג השירות שפועל בחזית | תרחיש שימוש לדוגמה בשירות שצריך להצהיר על הסוג הזה |
---|---|
connectedDevice
| מעקב אחרי נתוני כושר באמצעות גאדג'ט לביש |
dataSync
| הורדת קבצים מרשת |
location
| המשך פעולה שהמשתמש יזם |
mediaPlayback
| הפעלת ספר אודיו, פודקאסט או מוזיקה |
mediaProjection
| הקלטת סרטון של תצוגת המכשיר למשך זמן קצר |
phoneCall
| איך מטפלים בשיחה פעילה |
Kotlin
Android 10 כולל את העדכונים הבאים לפיתוח ב-Kotlin.
הערות לגבי אפשרות להחזרת ערך null בממשקי API של libcore
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 ואילך, הפרות של nullability
מובילות לשגיאות במקום לאזהרות.
מידע נוסף על שינויים בהערות זמין במאמר 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 כולל את השינוי הבא בזמן הריצה.
הפעלת פינוי אשפה על סמך 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()
.