שינויים בהתנהגות: אפליקציות שמטרגטות ל-Android מגרסה 16 ואילך

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

对于以 Android 14(API 级别 34)及更低版本为目标平台的应用,或者对于通过将 elegantTextHeight 属性设置为 false 而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight 行为。
对于以 Android 16 为目标平台的应用,或者对于未通过将 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,‏ 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 וסוגים של שירותים שפועלים בחזית הבאים:

אם האפליקציה שלכם משתמשת בממשקי ה-API האלה, עכשיו היא צריכה לבקש את ההרשאות המפורטות המתאימות:

ההרשאות האלה זהות להרשאות שמגינות על הגישה לקריאת נתונים מ-Health Connect, מאגר הנתונים של Android לנתוני בריאות, כושר ואיכות חיים.