שינויים בהתנהגות: אפליקציות שמטרגטות ל-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 的任何使用。如需支持边到边,请参阅 ComposeView 指南。如有疑虑,请在反馈页面上通过问题跟踪器与我们联系。

כדי להשתמש בתכונה 'חזרה חזותית', צריך לבצע העברה או לבטל את ההסכמה

For apps targeting Android 16 or higher and running on an Android 16 or higher device, the predictive back system animations (back-to-home, cross-task, and cross-activity) are enabled by default. Additionally, onBackPressed is not called and KeyEvent.KEYCODE_BACK is not dispatched anymore.

If your app intercepts the back event and you haven't migrated to predictive back yet, update your app to use supported back navigation APIs. or temporarily opt out by setting the android:enableOnBackInvokedCallback attribute to false in the <application> or <activity> tag of your app's AndroidManifest.xml file.

The predictive back-to-home animation.
The predictive cross-activity animation.
The predictive cross-task animation.

ממשקי ה-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 לנתוני בריאות, כושר ואיכות חיים.