בדומה לגרסאות קודמות, 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 控制的“界面字体”即将停用,因此您应调整所有布局,以确保以阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语呈现一致且可持续的文字。

elegantTextHeight
属性设置为 false
而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。
elegantTextHeight
属性设置为 false
来替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。פונקציונליות עיקרית
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 לנתוני בריאות, כושר ואיכות חיים.