בדומה לגרסאות קודמות, Android 16 כולל שינויים בהתנהגות שעשויים להשפיע על האפליקציה שלכם. השינויים הבאים בהתנהגות חלים אך ורק על אפליקציות שמטרגטות ל-Android 16 ואילך. אם האפליקציה שלכם מטרגטת את Android מגרסה 16 ואילך, עליכם לשנות את האפליקציה כך שתתמוך בהתנהגויות האלה, במקרים הרלוונטיים.
חשוב גם לבדוק את רשימת השינויים בהתנהגות שמשפיעים על כל האפליקציות שפועלות ב-Android 16, ללא קשר ל-targetSdkVersion
של האפליקציה.
חוויית משתמש וממשק המשתמש של המערכת
Android 16 כולל את השינויים הבאים, שנועדו ליצור חוויית משתמש עקבית ואינטואיטיבית יותר.
הסרת האפשרות לביטול ההסכמה לתצוגה מקצה לקצה
ב-Android 15 נאכפת תצוגה מקצה לקצה לאפליקציות שמטרגטות ל-Android 15 (רמת API 35), אבל אפשר לבטל את ההסכמה לכך באפליקציה על ידי הגדרת R.attr#windowOptOutEdgeToEdgeEnforcement
לערך true
. באפליקציות שמטרגטות את Android מגרסה 16 ואילך, המאפיין R.attr#windowOptOutEdgeToEdgeEnforcement
יוצא משימוש ויושבת, ולא ניתן יהיה למנוע את המעבר לתצוגה מקצה לקצה.
כדי לבדוק את האפליקציה ב-Android 16 Beta 2, צריך לוודא שהיא תומכת במסך מלא ולהסיר כל שימוש ב-R.attr#windowOptOutEdgeToEdgeEnforcement
. כדי לתמוך בתמונות ממלאות המסך, תוכלו לעיין בהנחיות לכתיבה ולתצוגות. אתם יכולים לדווח לנו על בעיות בדף המשוב שלנו.
כדי להשתמש בתכונה 'חזרה חזותית', צריך לבצע העברה או לבטל את ההסכמה
באפליקציות שמטרגטות ל-Android 16 ואילך שפועלות במכשיר Android בגרסה 16 ואילך, אנימציות המערכת לחיזוי תנועת החזרה (חזרה למסך הבית, בין משימות ובין פעילויות) מופעלות כברירת מחדל.
בנוסף, לא מתבצעת קריאה ל-onBackPressed
ו-KeyEvent.KEYCODE_BACK
לא נשלח יותר.
אם האפליקציה שלכם מנתבת את אירוע החזרה אחורה ואתם עדיין לא העברתם את האפליקציה לחזרה אחורה חזותית, עליכם לעדכן את האפליקציה כך שתשתמש בממשקי API נתמכים לניווט לאחור. לחלופין, תוכלו לבטל את ההסכמה באופן זמני על ידי הגדרת הערך false
למאפיין android:enableOnBackInvokedCallback
בתג <application>
או <activity>
בקובץ AndroidManifest.xml
של האפליקציה.
ממשקי ה-API של גופנים אלגנטיים הוצאו משימוש ומושבתים
באפליקציות שמטרגטות ל-Android 15 (רמת API 35), המאפיין elegantTextHeight
TextView
מוגדר כברירת מחדל לערך true
, כך שהגופן הקומפקטי מוחלף בגופן שקל יותר לקרוא אותו. אפשר לשנות את ההגדרה הזו על ידי הגדרת המאפיין elegantTextHeight
לערך false
.
ב-Android 16 המאפיין elegantTextHeight
הוצא משימוש, והוא לא יילקח בחשבון כשהאפליקציה שלכם מטרגטת ל-Android 16. אנחנו מוציאים משימוש את 'גופנים של ממשק משתמש' שנשלטים על ידי ממשקי ה-API האלה, לכן עליכם לשנות את הפריסות כדי להבטיח עיבוד טקסט עקבי ועמיד בעתיד בשפות הבאות: ערבית, לאוס, מיאנמר, טמילית, גוג'ראטי, קנאדה, מליאלאם, אודיה, טלוגו או תאילנדית.
![](https://developer.android.google.cn/static/about/versions/15/images/elegant-text-height-before.png?authuser=3&hl=he)
elegantTextHeight
באפליקציות שמטרגטות ל-Android
14 (רמת API 34) ומטה, או באפליקציות שמטרגטות ל-Android 15 (רמת API 35)
ושינו את ברירת המחדל על ידי הגדרת המאפיין elegantTextHeight
לערך false
.![](https://developer.android.google.cn/static/about/versions/15/images/elegant-text-height-after.png?authuser=3&hl=he)
elegantTextHeight
באפליקציות שמטרגטות ל-Android
16, או באפליקציות שמטרגטות ל-Android 15 (רמת API 35) שלא שינו את ברירת המחדל על ידי הגדרת המאפיין elegantTextHeight
לערך
false
.פונקציונליות עיקרית
Android 16 כולל את השינויים הבאים, שמשנה או מרחיבים יכולות ליבה שונות של מערכת Android.
אופטימיזציה של תזמון עבודה בתעריף קבוע
לפני הטירגוט ל-Android 16, אם scheduleAtFixedRate
החמיץ ביצוע של משימה כי הוא לא היה במחזור חיים תקין של תהליך, כל הביצועים שהוחמצו מתבצעים באופן מיידי כשהאפליקציה חוזרת למחזור חיים תקין.
כשמטרגטים ל-Android 16, פעולה אחת שהוחמצה של scheduleAtFixedRate
תושלם באופן מיידי כשהאפליקציה תחזור למחזור חיים תקין. שינוי ההתנהגות הזה צפוי לשפר את ביצועי האפליקציה. כדאי לבדוק את ההתנהגות הזו באפליקציה כדי לראות אם היא מושפעת.
אפשר גם לבדוק באמצעות מסגרת התאימות לאפליקציות ולהפעיל את הדגל STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
compat.
גורמי צורה של מכשירים
ב-Android 16 יש שינויים באפליקציות כשהן מוצגות במכשירים עם מסך גדול.
פריסות דינמיות
אפליקציות Android פועלות עכשיו במגוון מכשירים (כמו טלפונים, טאבלטים, מכשירים מתקפלים, מחשבים, מכוניות וטלוויזיות) ובמצב חלון במסכים גדולים (כמו מסך מפוצל ומצב חלון במחשב). לכן, מפתחים צריכים ליצור אפליקציות ל-Android שתתאימנה לכל מסך ולכל גודל חלון, ללא קשר לכיוון המכשיר. פרדיגמות כמו הגבלת הכיוון והיכולת לשנות את הגודל מגבילות מדי בעולם של היום, שבו יש מגוון מכשירים.
התעלמות מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב
באפליקציות שמטרגטות את Android 16, מערכת Android 16 כוללת שינויים באופן שבו המערכת מנהלת את ההגבלות על הכיוון, שינוי הגודל ויחס הגובה-רוחב. במסכים עם רוחב קטן ביותר של 600dp ומעלה, ההגבלות האלה כבר לא חלות. בנוסף, האפליקציות ממלאות את כל חלון התצוגה, ללא קשר ליחס הגובה-רוחב או לכיוון המועדף על המשתמש, ולא נעשה שימוש בפורמט pillarbox.
השינוי הזה מציג התנהגות רגילה חדשה בפלטפורמה. מערכת Android עוברת למודל שבו אפליקציות אמורות להתאים לכיוונים, לגדלים וליחסי גובה-רוחב שונים של מסכים. הגבלות כמו כיוון קבוע או אפשרות מוגבלת לשינוי הגודל פוגעות ביכולת ההתאמה של האפליקציה, לכן מומלץ להפוך את האפליקציה לניתנת להתאמה כדי לספק את חוויית המשתמש הטובה ביותר.
אפשר גם לבדוק את ההתנהגות הזו באמצעות [מסגרת התאימות לאפליקציות][a16-kilo-14] ולהפעיל את הדגל UNIVERSAL_RESIZABLE_BY_DEFAULT
compat.
שינויי תוכנה נפוצים שעלולים לגרום לכשלים
התעלמות מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב עשויה להשפיע על ממשק המשתמש של האפליקציה במכשירים מסוימים, במיוחד על אלמנטים שתוכננו לפריסות קטנות שמוגדרות לכיוון לאורך: לדוגמה, בעיות כמו פריסות מורחבות ואנימציות ורכיבים מחוץ למסך. הנחות לגבי יחס גובה-רוחב או כיוון יכולות לגרום לבעיות חזותיות באפליקציה. כאן מוסבר איך להימנע מהן ולשפר את ההתנהגות ההתאמה של האפליקציה.
אם תאפשרו את הסיבוב של המכשיר, תצטרכו ליצור מחדש יותר פעילויות, וכתוצאה מכך יכול להיות שתאבדו את מצב המשתמש אם לא תשמרו אותו כראוי. במאמר שמירה של מצבי ממשק משתמש מוסבר איך שומרים בצורה נכונה את המצב של ממשק המשתמש.
פרטי ההטמעה
המאפיינים הבאים של המניפסט וממשקי ה-API בסביבת זמן הריצה מתעלמים במכשירים עם מסך גדול במצב מסך מלא ובמצב חלונות מרובים:
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
המערכת מתעלמת מהערכים הבאים של screenOrientation
, setRequestedOrientation()
ו-getRequestedOrientation()
:
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
לגבי שינוי הגודל של התצוגה, ל-android:resizeableActivity="false"
, ל-android:minAspectRatio
ול-android:maxAspectRatio
אין השפעה.
באפליקציות שמטרגטות את Android 16, מערכת Android מתעלמת כברירת מחדל מההגבלות על כיוון האפליקציה, שינוי הגודל שלה ויחס הגובה-רוחב שלה במסכים גדולים. עם זאת, כל אפליקציה שלא מוכנה לחלוטין יכולה לבטל את ההסכמה לשימוש בהתנהגות הזו באופן זמני (כתוצאה מכך, האפליקציה תעבור למצב תאימות כמו בעבר).
חריגים
ההגבלות על הכיוון, שינוי הגודל ויחס הגובה-רוחב ב-Android 16 לא חלות במצבים הבאים:
- משחקים (על סמך הדגל
android:appCategory
) - משתמשים שמביעים הסכמה מפורשת להתנהגות ברירת המחדל של האפליקציה בהגדרות יחס הגובה-רוחב של המכשיר
- מסכים שקטנים מ-
sw600dp
ביטול ההסכמה באופן זמני
כדי לבטל את ההסכמה לפעילות ספציפית, מגדירים את מאפיין המניפסט PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
:
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
אם חלקים רבים מדי באפליקציה שלכם לא מוכנים ל-Android 16, תוכלו לבטל את ההסכמה לחלוטין על ידי החלת אותו מאפיין ברמת האפליקציה:
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
בריאות וכושר
ב-Android 16 יש שינויים לגבי נתוני הבריאות והכושר:
הרשאות לבריאות ולכושר
באפליקציות שמטרגטות ל-Android 16 ואילך, ההרשאות של BODY_SENSORS
עוברות להרשאות המפורטות בקטע android.permissions.health
, שבהן משתמשת גם Health
Connect. כל ממשק API שדרושה לו בעבר ההרשאה BODY_SENSORS
או BODY_SENSORS_BACKGROUND
מחייב עכשיו את ההרשאה המתאימה android.permissions.health
. השינוי הזה משפיע על סוגי הנתונים, ממשקי ה-API וסוגים של שירותים שפועלים בחזית הבאים:
HEART_RATE_BPM
מ-Wear Health ServicesSensor.TYPE_HEART_RATE
מ-Android Sensor ManagerheartRateAccuracy
וגםheartRateBpm
מ-WearProtoLayout
FOREGROUND_SERVICE_TYPE_HEALTH
, שבו נדרשת ההרשאה המתאימהandroid.permission.health
במקוםBODY_SENSORS
אם האפליקציה שלכם משתמשת בממשקי ה-API האלה, עכשיו היא צריכה לבקש את ההרשאות המפורטות המתאימות:
- למעקב אחרי קצב הלב, SpO2 או טמפרטורת העור במהלך השימוש: צריך לבקש את ההרשאה המפורטת בקטע
android.permissions.health
, למשלREAD_HEART_RATE
במקוםBODY_SENSORS
. - לגישה לחיישן ברקע: מבקשים את ההרשאה
READ_HEALTH_DATA_IN_BACKGROUND
במקוםBODY_SENSORS_BACKGROUND
.
ההרשאות האלה זהות להרשאות שמגינות על הגישה לקריאת נתונים מ-Health Connect, מאגר הנתונים של Android לנתוני בריאות, כושר ואיכות חיים.