תכונות וממשקי API ב-Android 10

ב-Android 10 יש תכונות ופיצ'רים נהדרים למשתמשים ולמפתחים. במסמך הזה נסביר מה זמין למפתחים.

למידע נוסף על ממשקי ה-API, אפשר לקרוא את דוח ההבדלים של ממשקי ה-API או להיכנס אל Android API reference – מחפשים ממשקי 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 מכיל methods סטטיות כדי לגשת לפונקציונליות שלא זמינה מממשקי ה-API הכלליים של javax.net.ssl. אפשר להסיק את השמות של הכיתות האלה כצורת הרבים של הכיתה המתאימה מסוג javax.net.ssl. לדוגמה, קוד שפועל במכונות של javax.net.ssl.SSLSocket יכול להשתמש במקום זאת ב-methods מ-SSLSockets.

תכונות קישוריות

ב-Android 10 יש כמה שיפורים שקשורים לרשתות ולקישוריות.

Wi-Fi network connection API

ב-Android 10 נוספה תמיכה בחיבורים ישירים מקצה לקצה. התכונה הזו מאפשרת לאפליקציה לבקש מהמשתמשים לשנות את נקודת הגישה שאליה המכשיר מחובר באמצעות WifiNetworkSpecifier כדי לתאר מאפיינים של רשת מבוקשת. החיבור מחשבון לחשבון משמש למטרות שאינן קשורות לספק הרשת, כמו הגדרת אתחול למכשירים משניים כמו חומרת Chromecast ו-Google Home.

מידע נוסף זמין במאמר Wi-Fi Network Request API לקישוריות מקצה לקצה.

ממשק API של הצעות לרשת Wi-Fi

ב-Android 10 נוספה תמיכה באפליקציה כדי להציג למשתמש בקשה להתחבר לנקודת גישה ל-Wi-Fi. אתם יכולים לספק הצעות לרשת שאליה רוצים להתחבר. בסופו של דבר, הפלטפורמה תבחר איזו נקודת גישה לאשר על סמך הקלט שלכם ושל אפליקציות אחרות.

מידע נוסף על התכונה הזו זמין במאמר הצעות לרשתות Wi-Fi.

שיפורים במצבי הביצועים הגבוהים ובזמן האחזור הנמוך של Wi-Fi

ב-Android 10 אפשר לספק רמז למודם הבסיסי כדי למזער את זמן האחזור.

ב-Android 10 יש הרחבה של Wi-Fi lock API כדי לתמוך ביעילות במצב ביצועים גבוהים ובמצב זמן אחזור קצר. חיסכון בצריכת החשמל של Wi-Fi מושבת במצב ביצועים גבוהים ובמצב זמן אחזור קצר, ויכול להיות שתתבצע אופטימיזציה נוספת של זמן האחזור במצב זמן אחזור קצר, בהתאם לתמיכה של המודם.

מצב זמן אחזור קצר מופעל רק כשהאפליקציה שמקבלת את הנעילה פועלת בחזית והמסך מופעל. המצב 'זמן אחזור קצר' מועיל במיוחד לאפליקציות משחקים לנייד בזמן אמת.

חיפושים מיוחדים בפותר ה-DNS

ב-Android 10 נוספה תמיכה מקורית בחיפושים מיוחדים של DNS באמצעות חיפושים בטקסט ללא הצפנה ומצב DNS-over-TLS. בעבר, פותר ה-DNS של הפלטפורמה תמך רק ברשומות A ו-AAAA, שמאפשרות לחפש רק את כתובות ה-IP שמשויכות לשם, אבל לא תמך בסוגי רשומות אחרים. ה-API DnsResolver מספק פתרון אסינכרוני גנרי, שמאפשר לחפש רשומות מסוג SRV,‏ NAPTR וסוגים אחרים. חשוב לזכור שניתוח התגובה נשאר באפליקציה לביצוע.

למידע על אפליקציות שמבוססות על NDK, ראו android_res_nsend.

Wi-Fi Easy Connect

ב-Android 10 אפשר להשתמש ב-Easy Connect כדי להקצות פרטי כניסה ל-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 נוספה היכולת לאסוף מידע על האיכות של שיחות 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, אפליקציה יכולה להקליט אודיו שנשמע מאפליקציות אחרות. מידע מלא זמין במאמר תיעוד של הפעלה.

סרגל שליטה בהתראות בסגנון MediaStyle

החל מ-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.

מידע נוסף זמין במאמר ממשק API של Android Native MIDI.

שיפורים של MediaCodecInfo

ב-Android 10 נוספו שיטות ל-MediaCodecInfo שמספקות מידע נוסף על קודק.

מידע נוסף זמין במאמר קודקים של מדיה.

API תרמי

כשמכשירים מתחממים מדי, הם עשויים להגביל את המעבד (CPU) ו/או את המעבד הגרפי (GPU), וזה עלול להשפיע על אפליקציות ומשחקים בדרכים לא צפויות. באפליקציות שמשתמשות בגרפיקה מורכבת, במחשוב כבד או בפעילות רציפה ברשת, יש סיכוי גבוה יותר לבעיות. הבעיות האלה עשויות להשתנות בין מכשירים בהתאם למעבד ולתדרי הליבה, לרמות השילוב, לחבילת התוכנה ולגורמים נוספים כמו גורמי העיצוב של המכשיר.

ב-Android 10, אפליקציות ומשחקים יכולים להשתמש ב-API תרמי כדי לעקוב אחרי שינויים במכשיר ולנקוט פעולה כדי לשמור על צריכת אנרגיה נמוכה יותר ולשחזר את הטמפרטורה הרגילה. אפליקציות רושמות מאזינים ב-PowerManager, שבאמצעותם המערכת מדווחת על סטטוס תרמי רציף, שנע בין קל ובינוני לבין חמור, קריטי, מצב חירום וכיבוי.

כשהמכשיר מדווח על לחץ תרמי, אפליקציות ומשחקים יכולים לעזור על ידי הפחתת הפעילות המתמשכת כדי לצמצם את צריכת החשמל בדרכים שונות. לדוגמה, אפליקציות סטרימינג יכולות להפחית את הרזולוציה או את קצב הביטים או את תעבורת הנתונים ברשת, אפליקציית מצלמה יכולה להשבית את הפלאש או את שיפור התמונה האינטנסיבי, משחק יכול להפחית את קצב הפריימים או את יצירת התמונות הפוליגונליות, אפליקציית מדיה יכולה להפחית את עוצמת הקול של הרמקול ואפליקציית מפות יכולה להשבית את ה-GPS.

כדי להשתמש ב-API התרמי נדרש שכבת HAL חדשה במכשיר. בשלב הזה, התמיכה ב-API התרמי זמינה במכשירי Pixel עם Android מגרסה 10 ואילך. אנחנו עובדים עם שותפינו יצרני המכשירים כדי להרחיב את התמיכה בסביבה העסקית בהקדם האפשרי.

מצלמה ותמונות

ב-Android 10 יש את התכונות החדשות הבאות שקשורות למצלמה ולתמונות:

תמיכה במצלמה מונוכרומטי

מערכת Android 9 (API ברמה 28) הייתה הראשונה שהציגה יכולת של מצלמה מונוכרומטית. ב-Android 10 נוספו כמה שיפורים לתמיכה במצלמות מונוכרום:

  • תמיכה בפורמט Y8 stream לשיפור יעילות הזיכרון.
  • תמיכה בצילומי DNG גולמיים מונוכרום.
  • הוספת ספירת CFA ל-MONO ול-NIR כדי להבדיל בין מצלמה רגילה מונוכרומטית לבין מצלמות אינפרה-אדום קרוב.

אפשר להשתמש בתכונה הזו כדי לצלם תמונה מונוכרום מקורית. במכשיר לוגי עם כמה מצלמות, יכול להיות שייעשה שימוש במצלמה מונוכרום כמצלמת משנה פיזית כדי לשפר את איכות התמונה בתאורה חלשה.

פורמט עומק דינמי

החל מ-Android 10, מצלמות יכולות לשמור את נתוני העומק של תמונה בקובץ נפרד, באמצעות סכימה חדשה שנקראת פורמט עומק דינמי (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

החל מגרסה 10 של Android, אפשר להפעיל את הפונקציה isTextEntryKey() כדי לקבוע אם AccessibilityNodeInfo נתון מייצג מקש להזנת טקסט שנמצא במקלדת או בלוח המקשים.

משוב קולי בתיבת דו-שיח בנושא נגישות

במקרים שבהם המשתמשים צריכים להשתמש במקש הקיצור לנגישות כדי להפעיל שירות נגישות, ב-Android 10 אפשר להוסיף להנחיה של תיבת הדו-שיח הנחיה להמרת טקסט לדיבור, אם השירות מבקש זאת.

קיצור דרך לנגישות כשהניווט באמצעות תנועות מופעל

כשהתכונה ניווט באמצעות תנועות מופעלת ב-Android 10, לחצן הנגישות לא גלוי ולא ניתן לבחור בו. כדי לגשת לתפריט של שירותי הנגישות, המשתמשים צריכים לבצע אחת מהתנועות הבאות:

  • מחליקים למעלה עם שתי אצבעות.
  • מחליקים למעלה עם שתי אצבעות ומחזיקים.

קיצור דרך לנגישות במקלדות פיזיות

ב-Android 10, המשתמשים יכולים להפעיל את מקשי הקיצור לנגישות במקלדת פיזית על ידי הקשה על Control+Alt+Z.

שיפור של אמצעי הבקרה של המקלדת הווירטואלית

ב-Android 10, שירותי הנגישות יכולים לבקש להציג את המקלדת הווירטואלית גם אם המכשיר מזהה מקלדת פיזית מחוברת. המשתמשים יכולים לשנות את ההתנהגות הזו.

זמן קצוב מוגדר מראש לתפוגה של נגישות

ב-Android 10 אנחנו משיקים את ה-API של getRecommendedTimeoutMillis(). השיטה הזו מספקת תמיכה בזמני תפוגה מוגדרים על ידי משתמשים לרכיבי ממשק משתמש אינטראקטיביים ולא אינטראקטיביים. הערך המוחזר מושפע גם מההעדפות של המשתמש וגם מממשקי ה-API של שירותי הנגישות.

שיפורים במילוי האוטומטי

ב-Android 10 יש את השיפורים הבאים בשירות המילוי האוטומטי.

בקשות למילוי אוטומטי שקשורות לתאימות

אפשר להשתמש בדגל FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST כדי לקבוע אם בקשת מילוי אוטומטי נוצרה דרך מצב התאימות.

שמירת שם המשתמש והסיסמה בו-זמנית

אפשר לתמוך במקרים שבהם האפליקציה משתמשת בכמה פעילויות כדי להציג שם משתמש, סיסמה ושדות אחרים באמצעות הדגל SaveInfo.FLAG_DELAY_SAVE.

אינטראקציה של משתמשים עם ממשק המשתמש של השמירה

כדי להציג ולהסתיר שדה סיסמה בתיבת דו-שיח לשמירה, מגדירים מאזין לפעולות בתיבת הדו-שיח ומשנים את ההצגה של התצוגה המרוחקת של הסיסמה המתאימה.

תמיכה בעדכון מערכי נתונים

המילוי האוטומטי יכול לעדכן סיסמאות קיימות. לדוגמה, אם משתמש כבר שמר סיסמה, והוא שומר סיסמה חדשה, התכונה 'מילוי אוטומטי' מבקשת מהמשתמש לעדכן את הסיסמה הקיימת במקום לשמור סיסמה חדשה.

שיפורים בסיווג השדות

ב-Android 10 יש את השיפורים הבאים ב-Field Classification API.

ה-constructor של UserData.Builder

המבנה של ה-constructor של UserData.Builder השתנה כדי להתאים יותר לדפוס Builder.

מתן הרשאה למפות ערך לכמה סוגים של מזהי קטגוריות

כשמשתמשים ב-UserData.Builder ב-Android 10, אפשר עכשיו למפות ערך למספר סוגים של מזהי קטגוריות. בגרסאות קודמות, הופעלה חריגה אם ערך נוסף יותר מפעם אחת.

תמיכה משופרת במספרי כרטיסי אשראי

סיווג השדות יכול עכשיו לזהות מספרים בני ארבע ספרות כארבע הספרות האחרונות של מספר כרטיס אשראי.

תמיכה בסיווג שדות ספציפיים לאפליקציה

ב-Android 10 נוספה התג FillResponse.setUserData(), שמאפשר להגדיר נתוני משתמש ספציפיים לאפליקציה למשך הסשן. כך שירות המילוי האוטומטי יוכל לזהות את סוגי השדות עם תוכן ספציפי לאפליקציה.

ממשק השליטה בממשק המשתמש ובמערכת

ב-Android 10 יש את השיפורים הבאים בממשק המשתמש:

תמיכה במכסות של JVMTI PopFrame

ב-Android 10 נוספה תמיכה ביכולת can_pop_frames בהטמעת JVMTI ב-Android. במהלך ניפוי באגים, התכונה הזו מאפשרת להריץ מחדש פונקציות אחרי השהיה בנקודת עצירה (breakpoint) ושינוי של הגדרות מקומיות, globals או חלק של פונקציה. למידע נוסף, ראו דף העזרה של Pop Frame של Oracle.

Surface Control API

ב-Android 10 יש API‏ SurfaceControl לגישה ברמה נמוכה למעבד הגרפיקה של המערכת (SurfaceFlinger). לרוב המשתמשים, SurfaceView היא הדרך הנכונה לנצל את מעבד הגרפיקה. ה-API של SurfaceControl יכול להיות שימושי במקרים מסוימים, למשל:

  • סנכרון של כמה משטחים
  • הטמעה של משטח במספר תהליכים
  • ניהול חיי המשתמש ברמה נמוכה יותר

ממשק ה-API של SurfaceControl זמין גם בSDK וגם בקישור ל-NDK. ההטמעה של NDK כוללת ממשק API להחלפה ידנית של מאגרים עם המרכזן. כך יש חלופה למשתמשים שמנסים להשתמש במגבלות של BufferQueue.

זיהוי של עיבוד נתונים תקוע ב-WebView

ב-Android 10 נוספה הכיתה המופשטת WebViewRenderProcessClient, שבאמצעותה אפליקציות יכולות לזהות אם WebView הפסיק להגיב. כדי להשתמש בכיתה הזו:

  1. להגדיר מחלקה משנית משלכם ולהטמיע את ה-methods onRenderProcessResponsive() ו-onRenderProcessUnresponsive().
  2. מחברים מכונה של WebViewRenderProcessClient לאובייקט WebView אחד או יותר.
  3. אם ה-WebView לא מגיב, המערכת קוראת לשיטה onRenderProcessUnresponsive() של הלקוח, ומעבירה את הערכים WebView ו-WebViewRenderProcess. (אם WebView הוא תהליך יחיד, הפרמטר WebViewRenderProcess הוא null). האפליקציה יכולה לבצע את הפעולה המתאימה, כמו הצגת תיבת דו-שיח למשתמשים, שבה הם שואלים אם הוא רוצה לעצור את תהליך העיבוד.

אם ה-WebView לא מגיב, המערכת מתקשרת אל onRenderProcessUnresponsive() מדי פעם (לא יותר מפעם ב-5 שניות), אבל לא מבצעת פעולה אחרת. אם ה-WebView יגיב שוב, המערכת תפנה אל onRenderProcessResponsive() רק פעם אחת.

חלוניות ההגדרות

ב-Android 10 אנחנו משיקים את חלוניות ההגדרות, API שמאפשר לאפליקציות להציג למשתמשים הגדרות בהקשר של האפליקציה. התכונה הזו מונעת מהמשתמשים להיכנס להגדרות כדי לשנות דברים כמו NFC או חבילת גלישה כדי להשתמש באפליקציה.

איור 1. המשתמש מנסה לפתוח דף אינטרנט בזמן שהמכשיר לא מחובר לרשת. Chrome יקפוץ את חלונית ההגדרות של קישוריות אינטרנט...

איור 2. המשתמש יכול להפעיל את ה-Wi-Fi ולבחור רשת בלי לצאת מאפליקציית Chrome.

לדוגמה, נניח שמשתמש פותח דפדפן אינטרנט בזמן שהמכשיר שלו במצב טיסה. לפני Android 10, האפליקציה הציגה רק הודעה כללית שבה המשתמש מתבקש לפתוח את ההגדרות כדי לשחזר את החיבור. ב-Android 10, באפליקציית הדפדפן יכול להופיע חלונית בתוך הדף עם הגדרות קישוריות חשובות, כמו מצב טיסה, Wi-Fi (כולל רשתות בקרבת מקום) ונתונים לנייד. בעזרת הלוח הזה, המשתמשים יכולים לשחזר את החיבור בלי לצאת מהאפליקציה.

כדי להציג חלונית הגדרות, מפעילים כוונה עם אחת מהפעולות הבאות של 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 API.

במקום לאחזר תוצאות באופן תגובתי על פי דרישה, API של קיצורי הדרך לשיתוף מאפשר לאפליקציות לפרסם יעדים לשיתוף ישיר מראש. כך פועלת ShortcutManager. מאחר ששני ממשקי ה-API דומים, הרחבנו את ShortcutInfo API כדי להקל על השימוש בשתי התכונות. באמצעות Sharing Shortcuts API, אפשר להקצות ישירות קטגוריות או אנשים ליעד שיתוף. יעדי השיתוף נשארים במערכת עד שאותה אפליקציה מעדכנת אותם או עד שהאפליקציה תוסר.

המנגנון הקודם של שיתוף ישיר עדיין פועל, אבל לאפליקציות שמשתמשות בו יש תעדוף נמוך יותר מאשר לאפליקציות שמשתמשות ב-Sharing Shortcuts API.

ShortcutInfo.Builder הוסיפה ושיפור של שיטות לספק מידע נוסף על יעד השיתוף.

יעדים של שיתוף ישיר

אפשר לפרסם קיצור דרך דינמי כיעד לשיתוף ישיר. פרסום יעדים של שיתוף ישיר

ShortcutManagerCompat הוא API חדש של AndroidX שמספק תאימות לאחור ל-DirectShare API הישן. זו הדרך המועדפת לפרסם מטרות שיתוף.

תצוגה מקדימה של טקסט

כשאפליקציה משתפת תוכן טקסט, היא יכולה להציג תצוגה מקדימה אופציונלית של התוכן בממשק המשתמש של 'כרטיסיית השיתוף'.

הוספת תצוגות מקדימות של טקסט עשיר

מידע נוסף

למידע נוסף על האופן שבו אפליקציות יכולות לשתף נתונים, תוכלו לעיין במאמרים שליחת נתונים פשוטים לאפליקציות אחרות וקבלת נתונים פשוטים מאפליקציות אחרות.

עיצוב כהה

ב-Android 10 יש עיצוב כהה שחלה גם על ממשק המשתמש של מערכת Android וגם על האפליקציות שפועלות במכשיר. למידע מלא, ראו עיצוב כהה.

סוגים של שירותים שפועלים בחזית

ב-Android 10 מופיע המאפיין foregroundServiceType של מניפסט XML, שצריך לכלול בהגדרה של כמה שירותים ספציפיים. אבל אפשר להקצות כמה סוגים של שירותים שפועלים בחזית לשירות מסוים, אבל לעיתים רחוקות.

בטבלה הבאה מוצגים סוגי השירותים השונים שפועלים בחזית, והשירותים שבהם כדאי להצהיר על סוג ספציפי:

סוג השירות שפועל בחזית תרחיש לדוגמה לשירות שצריך להצהיר על הסוג הזה
connectedDevice מעקב אחר צמיד כושר לביש
dataSync הורדת קבצים מרשת
location המשך פעולה שהמשתמש יזם
mediaPlayback הפעלת ספר אודיו, פודקאסט או מוזיקה
mediaProjection להקליט סרטון של מסך המכשיר בפרק זמן קצר
phoneCall טיפול בשיחת טלפון פעילה

Kotlin

Android 10 כולל את העדכונים הבאים לפיתוח ב-Kotlin.

הערות על יכולת האפסיות לממשקי API של libcore

ב-Android 10 יש שיפורים בהיקף ההערות לגבי יכולת האפסיות ב-SDK של ממשקי ה-API של libcore. ההערות האלה מאפשרות למפתחי אפליקציות שמשתמשים בניתוח של יכולת האפס ב-Android Studio או ב-Kotlin או ב-Java לקבל מידע על האפס במהלך האינטראקציה עם ממשקי ה-API האלה.

בדרך כלל, הפרות של חוזה null ב-Kotlin גורמות לשגיאות הידור. כדי להבטיח תאימות לקוד הקיים, רק ההערות @RecentlyNullable ו-@RecentlyNonNull מתווספות. כלומר, הפרות של תנאי האפשרות לקבלת ערך גורמות להצגת אזהרות במקום שגיאות.

בנוסף, כל הערות @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.

TLS (אבטחת שכבת התעבורה) ב-ELF

אפליקציות שפותחו באמצעות ה-NDK עם רמת API מינימלית של 29 יכולות להשתמש ב-ELF TLS במקום ב-emutls. נוספה תמיכה בקישור דינמי וסטטי כדי לתמוך בשיטה הזו לטיפול במשתנים מקומיים לשרשור.

באפליקציות שנוצרו עבור רמת API 28 ומטה, הוחלו שיפורים ב-libgcc/compiler-rt כדי לעקוף בעיות מסוימות ב-emutls.

למידע נוסף, ראו שינויים ב-Android למפתחים של NDK.

זמן ריצה

ב-Android 10 יש את השינוי הבא בסביבת זמן הריצה.

הפעלת איסוף אשפה מבוסס-mallinfo

כשאובייקטים קטנים של Java בפלטפורמה מפנים לאובייקטים ענקיים ב-heap של C++, לרוב אפשר למחזר את אובייקטי ה-C++ רק כשאוספים את אובייקט ה-Java, למשל, כשמסיימים את הטיפול בו. בגרסאות קודמות, הפלטפורמה העריכה את הגדלים של אובייקטים רבים ב-C++ שמשויכים לאובייקטים ב-Java. ההערכה הזו לא תמיד הייתה מדויקת, ולפעמים היא הובילה לעלייה משמעותית בשימוש בזיכרון, כי הפלטפורמה לא הצליחה לבצע איסוף גראז' כשהיה צריך.

ב-Android 10, אוסף האשפה (GC) עוקב אחרי הגודל הכולל של הערימה שמוקצית על ידי המערכת malloc(), כדי לוודא שהקצאות גדולות של malloc() תמיד ייכללו בחישובים של הפעלת GC. כתוצאה מכך, אפליקציות שמשלבות מספר גדול של הקצאות 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 הוספנו את האפשרות להציג הצעות לתשובות בתוך התראה. בגרסה 10 של Android, התכונה הזו מתרחבת עם היכולת לכלול הצעות לפעולות שמבוססות על כוונה. בנוסף, הפלטפורמה יכולה ליצור את ההצעות האלה באופן אוטומטי. אפליקציות עדיין יכולות לספק הצעות משלהן, או לבטל את ההסכמה לקבלת הצעות שהמערכת יוצרת.

ממשק ה-API שמשמש ליצירת התשובות האלה הוא חלק מ-TextClassifier, וגם נחשף ישירות למפתחים ב-Android 10. מידע נוסף זמין בקטע על השיפורים ב-TextClassifier.

אם האפליקציה מספקת הצעות משלה, הפלטפורמה לא יוצרת הצעות אוטומטיות. אם אתם לא רוצים שתוצגו באפליקציה הצעות לתשובות או לפעולות, תוכלו לבטל את ההסכמה להצגת תשובות ופעולות שנוצרו על ידי המערכת באמצעות setAllowGeneratedReplies() ו-setAllowSystemGeneratedContextualActions().