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

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 בדף 'שינויים בהתנהגות בכל האפליקציות'.

ממשק API של Public Conscrypt

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

אפשר לקרוא מידע נוסף במאמר בנושא API של בקשת רשת Wi-Fi מקצה לקצה (P2P) קישוריות..

ממשק 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

ב-Android 10 אפשר להשתמש ב-Easy Connect כדי להקצות Wi-Fi פרטי כניסה למכשיר להשוואה, כתחליף ל-WPS שיצא משימוש. אפליקציות יכולות לשלב את Easy Connect בתהליך ההגדרה וההקצאה שלהן באמצעות ה ACTION_PROCESS_WIFI_EASY_CONNECT_URI בכוונה טובה.

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

ממשק API של חיבור ישיר ל-Wi-Fi

למחלקות ה-API WifiP2pConfig ו-WifiP2pManager יש עדכונים ב-Android 10 כדי לתמוך ביכולות של יצירת חיבור מהיר אל Wi-Fi ישיר באמצעות מידע שנקבע מראש. המידע הזה משותף דרך ערוץ צדדי, 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 המולטימדיה (IMS), כולל איכות אל הרשת וממנה, במכשירים שתומכים בתכונה הזו.

סינון שיחות וזיהוי מתקשר

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

ממשק ה-API של שירות הפניה אוטומטית של שיחות

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

שיפורים ביצירת קבצים באחסון חיצוני

בנוסף להצגת היקף ההרשאות אחסון, ב-Android 10 נוספו היכולות הבאות שקשורות לאפליקציות חיצוניות אחסון:

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

מדיה וגרפיקה

ב-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 עם מידע נוסף מידע על קודק.

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

Thermal API

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

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

כשהמכשיר מדווח על מתח תרמי, אפליקציות ומשחקים יכולים לעזור בגיבוי פעילויות שוטפות להפחתת צריכת החשמל בדרכים שונות. לדוגמה, אפליקציות סטרימינג יכולות לצמצם את הרזולוציה/קצב העברת הנתונים או את התנועה ברשת, אפליקציה יכולה להשבית Flash או שיפור תמונה אינטנסיבי, משחק עלול להפחית קצב פריימים או עיצוב של פוליגון, אפליקציית מדיה עשויה להפחית את עוצמת הקול של הרמקול, ואפליקציית מפות Google יכולה לכבות את ה-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). הפריטים הבאים נוספו אל ה API של מצלמה2:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig) – מאפשר לשאול אם הסשן שהועבר אפשר להשתמש בהגדרות האישיות כדי ליצור סשן של צילום מצלמה.

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

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

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

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

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

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

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

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

constructor של UserData.Builder

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

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

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

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

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

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

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

רכיבים אינטראקטיביים ואמצעי בקרה במערכת

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

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

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

ממשק API לבקרת משטח

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

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

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

זיהוי מצב רעב ב-WebView

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

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

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

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

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

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

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

לדוגמה, נניח שמשתמש פותח דפדפן אינטרנט בזמן שהמכשיר שלו במצב טיסה. לפני 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 יש כמה שיפורים בשיתוף:

API לשיתוף קיצורי דרך

שיתוף קיצורי דרך ב-API מחליפה את השיתוף הישיר ממשקי API.

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

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

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

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

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

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

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

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

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

מידע נוסף

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

עיצוב כהה

ב-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 כדי לקבל null במהלך האינטראקציה עם ממשקי ה-API האלה.

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

בנוסף, כל ההערות של @RecentlyNullable או @RecentlyNonNull שנוספו ב-Android 9 ישתנו ל-@Nullable ול-@NonNull בהתאמה. המשמעות היא שב-Android 10 ואילך, הפרות של תכונת ה-null יובילו לשגיאות במקום לאזהרות.

מידע נוסף על השינויים בהערות זמין במאמר Android Pay SDK ידידותי יותר ל-Kotlin ב-Android Developers Blog.

NDK

ב-Android 10 נכללים השינויים הבאים ב-NDK.

שיפור ניפוי הבאגים של הבעלות על מתאר הקובץ

ב-Android 10 נוספה fdsan, שבעזרתה קל יותר למצוא ולתקן בעיות בעלות של מתאר קובץ.

באגים שקשורים לטיפול לקוי בבעלות של מתארי קבצים, שבדרך כלל בא לידי ביטוי כמו שימוש אחרי סגירה וסגירה כפולה, מקבילים להקצאת זיכרון באגים use-after-free ו-Doubles, אבל הם נוטים להיות הרבה יותר קשים לאבחן ולתקן. 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 בפלטפורמה קטנים מפנים לאובייקטים עצומים בערימת C++ , לעיתים קרובות אפשר להחזיר אובייקטים מסוג C++ רק כאשר אובייקט Java נאסף, וגם לדוגמה, סופי. במהדורות קודמות, הפלטפורמה העריכה את המידות של הרבה אובייקטים של C++ שמשויכים לאובייקטים של Java. ההערכה הזו לא תמיד הייתה ולפעמים הביא לעלייה משמעותית בשימוש בזיכרון, הפלטפורמה לא הצליחה לאסוף אשפה כשהדבר היה אמור להיות.

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

בדיקה וניפוי באגים

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

שיפורים במעקב אחר המערכת במכשיר

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

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

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

שיפורים במסווגי טקסט

ב-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()