تغییرات رفتار: برنامه هایی که اندروید 16 یا بالاتر را هدف قرار می دهند

مانند نسخه های قبلی، اندروید 16 شامل تغییرات رفتاری است که ممکن است بر برنامه شما تأثیر بگذارد. تغییرات رفتاری زیر منحصراً برای برنامه‌هایی اعمال می‌شود که اندروید 16 یا بالاتر را هدف قرار می‌دهند. اگر برنامه شما اندروید 16 یا بالاتر را هدف قرار می دهد، باید برنامه خود را تغییر دهید تا در صورت لزوم از این رفتارها پشتیبانی کند.

حتماً فهرستی از تغییرات رفتاری را نیز مرور کنید که بر همه برنامه‌های در حال اجرا در Android 16 بدون توجه به targetSdkVersion برنامه شما تأثیر می‌گذارد.

تجربه کاربری و رابط کاربری سیستم

اندروید 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‌های پیمایش برگشتی پشتیبانی‌شده استفاده کند . یا با تنظیم ویژگی android:enableOnBackInvokedCallback روی false در تگ <application> یا <activity> فایل AndroidManifest.xml برنامه خود، موقتاً انصراف دهید.

انیمیشن پیشگوی بازگشت به خانه.
انیمیشن متقابل پیش بینی کننده.
انیمیشن متقابل پیش بینی کننده.

APIهای فونت زیبا منسوخ و غیرفعال شدند

برنامه‌هایی که Android 15 را هدف قرار می‌دهند (سطح API 35) دارای ویژگی elegantTextHeight TextView به‌طور پیش‌فرض روی true تنظیم شده‌اند و فونت فشرده را با فونتی که بسیار خواناتر است جایگزین می‌کند. می‌توانید با تنظیم ویژگی elegantTextHeight روی false این مورد را لغو کنید.

Android 16 ویژگی elegantTextHeight را منسوخ می‌کند، و زمانی که برنامه شما Android 16 را هدف قرار دهد، این ویژگی نادیده گرفته می‌شود. «فونت‌های UI» که توسط این APIها کنترل می‌شوند، متوقف می‌شوند، بنابراین باید هر گونه طرح‌بندی را برای اطمینان از ارائه متن ثابت و ثابت در آینده به زبان‌های عربی، لائوس، میانمار، تامیل، گجراتی، مالزی، تایلندی، تله‌آلو، کانا تطبیق دهید.

رفتار elegantTextHeight برای برنامه‌هایی که Android 14 (سطح API 34) و پایین‌تر را هدف قرار می‌دهند، یا برای برنامه‌هایی که Android 15 را هدف قرار می‌دهند (سطح API 35) که با تنظیم ویژگی elegantTextHeight روی false پیش‌فرض را لغو می‌کنند.
رفتار elegantTextHeight برای برنامه‌هایی که Android 16 را هدف قرار می‌دهند، یا برای برنامه‌هایی که Android 15 را هدف قرار می‌دهند (سطح API 35) که با تنظیم ویژگی elegantTextHeight روی false پیش‌فرض را لغو نکرده‌اند.

عملکرد اصلی

اندروید 16 شامل تغییرات زیر است که قابلیت‌های اصلی سیستم اندروید را تغییر داده یا گسترش می‌دهد.

بهینه سازی زمان بندی کار با نرخ ثابت

قبل از هدف قرار دادن اندروید 16، زمانی که scheduleAtFixedRate اجرای یک کار را به دلیل خارج از چرخه حیات فرآیند معتبر از دست داد، همه اجراهای از دست رفته بلافاصله با بازگشت برنامه به چرخه حیات معتبر اجرا می شوند.

هنگام هدف قرار دادن Android 16، حداکثر یک اجرای از دست رفته scheduleAtFixedRate بلافاصله پس از بازگشت برنامه به چرخه حیات معتبر اجرا می شود. انتظار می رود این تغییر رفتار باعث بهبود عملکرد برنامه شود. این رفتار را در برنامه خود آزمایش کنید تا بررسی کنید آیا برنامه شما تحت تأثیر قرار گرفته است یا خیر. همچنین می‌توانید با استفاده از چارچوب سازگاری برنامه و فعال کردن پرچم سازگار STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS آزمایش کنید.

صفحه نمایش های بزرگ و عوامل شکل

Android 16 شامل تغییرات زیر برای برنامه‌ها هنگام نمایش در دستگاه‌های صفحه بزرگ است.

طرح بندی های تطبیقی

با توجه به اینکه اکنون برنامه‌های اندروید بر روی دستگاه‌های مختلف (مانند تلفن‌ها، تبلت‌ها، تاشوها و دسکتاپ‌ها) و حالت‌های پنجره‌سازی روی صفحه‌های بزرگ (مانند پنجره‌های تقسیم‌شده و دسکتاپ) اجرا می‌شوند، توسعه‌دهندگان باید برنامه‌های اندرویدی بسازند که با هر اندازه صفحه و پنجره سازگار باشد، صرف نظر از جهت‌گیری دستگاه. پارادایم هایی مانند محدود کردن جهت گیری و تغییر اندازه در دنیای چند دستگاهی امروزی بسیار محدود کننده هستند.

جهت گیری، قابلیت تغییر اندازه و محدودیت های نسبت تصویر را نادیده بگیرید

برای برنامه‌هایی که Android 16 را هدف قرار می‌دهند، Android 16 شامل تغییراتی در نحوه مدیریت سیستم جهت‌گیری، قابلیت تغییر اندازه و محدودیت‌های نسبت ابعاد است. در نمایشگرهایی با کمترین عرض >= 600dp، محدودیت ها دیگر اعمال نمی شوند. برنامه‌ها همچنین کل پنجره نمایشگر را بدون توجه به نسبت ابعاد یا جهت‌گیری ترجیحی کاربر پر می‌کنند و از ستون‌باکسینگ استفاده نمی‌شود.

این تغییر رفتار پلت فرم استاندارد جدیدی را معرفی می کند. اندروید در حال حرکت به سمت مدلی است که انتظار می رود برنامه ها با جهت گیری ها، اندازه های نمایشگر و نسبت های مختلف سازگار شوند. محدودیت‌هایی مانند جهت‌گیری ثابت یا قابلیت تغییر اندازه محدود، مانع از سازگاری برنامه می‌شوند، بنابراین توصیه می‌کنیم برنامه خود را برای ارائه بهترین تجربه ممکن برای کاربر سازگار کنید .

همچنین می‌توانید این رفتار را با استفاده از [app compatibility frame][a16-kilo-14] و فعال کردن پرچم سازگار UNIVERSAL_RESIZABLE_BY_DEFAULT آزمایش کنید.

تغییرات متداول شکستن

نادیده گرفتن محدودیت‌های جهت، قابلیت تغییر اندازه و نسبت ابعاد ممکن است بر رابط کاربری برنامه شما در برخی از دستگاه‌ها تأثیر بگذارد، به‌ویژه عناصری که برای طرح‌بندی‌های کوچک قفل‌شده در جهت عمودی طراحی شده‌اند: برای مثال، مسائلی مانند طرح‌بندی‌های کشیده و انیمیشن‌ها و اجزای خارج از صفحه. هر گونه فرضی در مورد نسبت تصویر یا جهت‌گیری می‌تواند باعث ایجاد مشکلات بصری در برنامه شما شود. درباره نحوه اجتناب از آنها و بهبود رفتار تطبیقی ​​برنامه خود بیشتر بیاموزید .

اجازه چرخش دستگاه منجر به ایجاد مجدد فعالیت بیشتر می شود که در صورت عدم حفظ صحیح می تواند منجر به از دست دادن حالت کاربر شود. نحوه ذخیره صحیح حالت رابط کاربری را در حالت های ذخیره رابط کاربری بیاموزید.

جزئیات پیاده سازی

ویژگی های مانیفست زیر و API های زمان اجرا در دستگاه های صفحه بزرگ در حالت تمام صفحه و چند پنجره نادیده گرفته می شوند:

مقادیر زیر برای screenOrientation ، setRequestedOrientation() و getRequestedOrientation() نادیده گرفته می شوند:

  • portrait
  • reversePortrait
  • sensorPortrait
  • userPortrait
  • landscape
  • reverseLandscape
  • sensorLandscape
  • userLandscape

با توجه به قابلیت تغییر اندازه نمایشگر، android:resizeableActivity="false" ، android:minAspectRatio و android:maxAspectRatio هیچ تاثیری ندارند.

برای برنامه‌هایی که Android 16 را هدف قرار می‌دهند، محدودیت‌های جهت‌گیری برنامه، قابلیت تغییر اندازه و نسبت ابعاد به‌طور پیش‌فرض در صفحه‌های بزرگ نادیده گرفته می‌شوند، اما هر برنامه‌ای که کاملاً آماده نیست می‌تواند با انصراف موقتاً این رفتار را لغو کند (که منجر به رفتار قبلی یعنی قرار گرفتن در حالت سازگاری می‌شود).

استثنائات

محدودیت‌های جهت‌گیری، قابلیت تغییر اندازه و نسبت تصویر 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>

سلامتی و تناسب اندام

اندروید 16 شامل تغییرات زیر مربوط به داده های سلامتی و تناسب اندام است.

مجوزهای سلامت و تناسب اندام

برای برنامه‌هایی که Android 16 یا بالاتر را هدف قرار می‌دهند، مجوزهای BODY_SENSORS در حال انتقال به مجوزهای جزئی در android.permissions.health هستند که توسط Health Connect نیز استفاده می‌شود. هر API که قبلاً به BODY_SENSORS یا BODY_SENSORS_BACKGROUND نیاز داشت، اکنون به مجوز android.permissions.health مربوطه نیاز دارد. این بر انواع داده‌ها، APIها و انواع خدمات پیش‌زمینه زیر تأثیر می‌گذارد:

اگر برنامه شما از این APIها استفاده می کند، اکنون باید مجوزهای گرانول مربوطه را درخواست کند:

این مجوزها همان مجوزهایی هستند که از دسترسی به داده‌های خواندن از Health Connect ، ذخیره‌گاه داده Android برای داده‌های سلامتی، تناسب اندام و سلامتی محافظت می‌کنند.