আচরণ পরিবর্তন: সমস্ত অ্যাপ্লিকেশন

অ্যান্ড্রয়েড 16 প্ল্যাটফর্মে এমন আচরণের পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণ পরিবর্তনগুলি সমস্ত অ্যাপের ক্ষেত্রে প্রযোজ্য যখন সেগুলি Android 16 এ চলে, targetSdkVersion নির্বিশেষে। আপনার অ্যাপটি পরীক্ষা করা উচিত এবং তারপরে এই পরিবর্তনগুলিকে সমর্থন করার জন্য প্রয়োজন অনুসারে এটি সংশোধন করা উচিত, যেখানে প্রযোজ্য।

শুধুমাত্র Android 16 টার্গেট করা অ্যাপগুলিকে প্রভাবিত করে এমন আচরণের পরিবর্তনগুলির তালিকা পর্যালোচনা করা নিশ্চিত করুন।

মূল কার্যকারিতা

Android 16-এ নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে যা Android সিস্টেমের বিভিন্ন মূল ক্ষমতাগুলিকে সংশোধন বা প্রসারিত করে৷

চাকরির সময়সূচি কোটা অপ্টিমাইজেশান

অ্যান্ড্রয়েড 16 থেকে শুরু করে, আমরা নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করে নিয়মিত এবং দ্রুত কাজ সম্পাদনের রানটাইম কোটা সামঞ্জস্য করছি:

  • অ্যাপ্লিকেশানটি কোন অ্যাপ স্ট্যান্ডবাই বালতিতে রয়েছে : Android 16-এ, সক্রিয় স্ট্যান্ডবাই বাকেটগুলি উদার রানটাইম কোটা দ্বারা প্রয়োগ করা শুরু হবে৷
  • অ্যাপটি শীর্ষ অবস্থায় থাকাকালীন চাকরিটি কার্যকর করা শুরু করলে : Android 16-এ, অ্যাপটি ব্যবহারকারীর কাছে দৃশ্যমান থাকাকালীন চাকরি শুরু হয় এবং অ্যাপটি অদৃশ্য হয়ে যাওয়ার পরেও চলতে থাকে, চাকরির রানটাইম কোটা মেনে চলবে।
  • যদি একটি ফোরগ্রাউন্ড পরিষেবা চালানোর সময় কাজটি কার্যকর করা হয় : Android 16-এ, একটি ফোরগ্রাউন্ড পরিষেবার সাথে একযোগে কাজ চালানোর সময় চাকরির রানটাইম কোটা মেনে চলবে। আপনি যদি ব্যবহারকারীর সূচনাকৃত ডেটা স্থানান্তরের জন্য কাজের সুবিধা নিয়ে থাকেন, তবে পরিবর্তে ব্যবহারকারীর সূচিত ডেটা স্থানান্তর কাজগুলি ব্যবহার করার কথা বিবেচনা করুন।

এই পরিবর্তনটি WorkManager, JobScheduler, এবং DownloadManager ব্যবহার করে নির্ধারিত কাজগুলিকে প্রভাবিত করে৷ কেন একটি কাজ বন্ধ করা হয়েছিল তা ডিবাগ করার জন্য, আমরা WorkInfo.getStopReason() (JobScheduler কাজের জন্য, JobParameters.getStopReason() ) কল করে কল করে কেন আপনার কাজ বন্ধ করা হয়েছিল তা লগ করার পরামর্শ দিই।

ব্যাটারি-অনুকূল সর্বোত্তম অনুশীলন সম্পর্কে আরও তথ্যের জন্য, টাস্ক শিডিউলিং API-এর জন্য ব্যাটারি ব্যবহার অপ্টিমাইজ করার নির্দেশিকা পড়ুন।

আমরা Android 16-এ প্রবর্তিত নতুন JobScheduler#getPendingJobReasonsHistory API ব্যবহার করার পরামর্শ দিচ্ছি কেন একটি চাকরি কার্যকর করা হয়নি তা বোঝার জন্য।

টেস্টিং

আপনার অ্যাপের আচরণ পরীক্ষা করার জন্য, আপনি নির্দিষ্ট চাকরির কোটা অপ্টিমাইজেশনের ওভাররাইড সক্ষম করতে পারেন যতক্ষণ না অ্যাপটি একটি Android 16 ডিভাইসে চলছে।

"শীর্ষ রাষ্ট্র চাকরীর রানটাইম কোটা মেনে চলবে" এর প্রয়োগ অক্ষম করতে, নিম্নলিখিত adb কমান্ডটি চালান:

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_TOP_STARTED_JOBS APP_PACKAGE_NAME

"যে কাজগুলি একযোগে একটি ফোরগ্রাউন্ড পরিষেবার সাথে কাজ চালানোর সময় কাজ রানটাইম কোটা মেনে চলবে" এর প্রয়োগকে নিষ্ক্রিয় করতে, নিম্নলিখিত adb কমান্ডটি চালান:

adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_FGS_JOBS APP_PACKAGE_NAME

নির্দিষ্ট অ্যাপ স্ট্যান্ডবাই বালতি আচরণ পরীক্ষা করতে, আপনি নিম্নলিখিত adb কমান্ড ব্যবহার করে আপনার অ্যাপের অ্যাপ স্ট্যান্ডবাই বাকেট সেট করতে পারেন:

adb shell am set-standby-bucket APP_PACKAGE_NAME active|working_set|frequent|rare|restricted

আপনার অ্যাপটি যে অ্যাপ স্ট্যান্ডবাই বালতিতে রয়েছে তা বোঝার জন্য, আপনি নিম্নলিখিত adb কমান্ড ব্যবহার করে আপনার অ্যাপের অ্যাপ স্ট্যান্ডবাই বাকেট পেতে পারেন:

adb shell am get-standby-bucket APP_PACKAGE_NAME

JobInfo#setImportantWhileForeground সম্পূর্ণরূপে অবজ্ঞা করা হচ্ছে

JobInfo.Builder#setImportantWhileForeground(boolean) পদ্ধতি একটি কাজের গুরুত্ব নির্দেশ করে যখন সময়সূচী অ্যাপটি অগ্রভাগে থাকে বা যখন সাময়িকভাবে ব্যাকগ্রাউন্ড সীমাবদ্ধতা থেকে অব্যাহতি দেওয়া হয়।

Android 12 (API লেভেল 31) থেকে এই পদ্ধতিটি অবমূল্যায়িত হয়েছে। অ্যান্ড্রয়েড 16 থেকে শুরু করে, এটি আর কার্যকরভাবে কাজ করে না এবং এই পদ্ধতিতে কল করা উপেক্ষা করা হবে।

কার্যকারিতার এই অপসারণ JobInfo#isImportantWhileForeground() ক্ষেত্রেও প্রযোজ্য। অ্যান্ড্রয়েড 16 থেকে শুরু করে, যদি পদ্ধতিটি বলা হয়, তবে পদ্ধতিটি false ফেরত দেয়।

আদেশকৃত সম্প্রচার অগ্রাধিকার সুযোগ আর বিশ্বব্যাপী নয়

Android 应用可以为广播接收器定义优先级,以控制接收器接收和处理广播的顺序。对于清单声明的接收器,应用可以使用 android:priority 属性来定义优先级;对于上下文注册的接收器,应用可以使用 IntentFilter#setPriority() API 来定义优先级。发送广播时,系统会按接收器的优先级(从高到低)将其传送给接收器。

在 Android 16 中,无法保证使用 android:priority 属性或 IntentFilter#setPriority() 在不同进程中传送广播的顺序。广播优先级仅在同一应用进程内有效,而不会跨所有进程有效。

此外,广播优先级将自动限制在 (SYSTEM_LOW_PRIORITY + 1, SYSTEM_HIGH_PRIORITY - 1) 的范围内。只有系统组件才能将 SYSTEM_LOW_PRIORITYSYSTEM_HIGH_PRIORITY 设置为广播优先级。

如果您的应用执行以下任一操作,可能会受到影响:

  1. 您的应用声明了具有相同广播 intent 的多个进程,并且希望根据优先级以特定顺序接收这些 intent。
  2. 您的应用进程与其他进程交互,并期望以特定顺序接收广播 intent。

如果进程需要相互协调,则应使用其他协调渠道进行通信。

ART অভ্যন্তরীণ পরিবর্তন

অ্যান্ড্রয়েড 16 এ অ্যান্ড্রয়েড রানটাইম (এআরটি) এর সর্বশেষ আপডেটগুলি অন্তর্ভুক্ত করে যা অ্যান্ড্রয়েড রানটাইমের (এআরটি) কর্মক্ষমতা উন্নত করে এবং অতিরিক্ত জাভা বৈশিষ্ট্যগুলির জন্য সমর্থন প্রদান করে। Google Play সিস্টেম আপডেটের মাধ্যমে, এই উন্নতিগুলি Android 12 (API স্তর 31) এবং উচ্চতর চলমান এক বিলিয়নেরও বেশি ডিভাইসে উপলব্ধ।

এই পরিবর্তনগুলি প্রকাশিত হওয়ার সাথে সাথে, ART-এর অভ্যন্তরীণ কাঠামোর উপর নির্ভর করে এমন লাইব্রেরি এবং অ্যাপ কোডগুলি Android 16 চালিত ডিভাইসগুলিতে সঠিকভাবে কাজ নাও করতে পারে, সেই সাথে আগের Android সংস্করণগুলি যা Google Play সিস্টেম আপডেটের মাধ্যমে ART মডিউল আপডেট করে।

অভ্যন্তরীণ কাঠামোর উপর নির্ভর করা (যেমন নন-SDK ইন্টারফেস ) সর্বদা সামঞ্জস্যের সমস্যার দিকে পরিচালিত করতে পারে, তবে অভ্যন্তরীণ এআরটি কাঠামোর উপকার করে এমন কোড (বা কোড ধারণকারী লাইব্রেরি) এর উপর নির্ভর করা এড়ানো বিশেষভাবে গুরুত্বপূর্ণ, যেহেতু ART পরিবর্তনগুলি প্ল্যাটফর্মের সাথে আবদ্ধ নয়। ডিভাইসটির সংস্করণটি চলছে এবং তারা Google Play সিস্টেম আপডেটের মাধ্যমে এক বিলিয়নেরও বেশি ডিভাইসে চলে যায়।

সমস্ত ডেভেলপারদের Android 16-এ তাদের অ্যাপ্লিকেশানগুলি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করে তাদের অ্যাপ প্রভাবিত হয়েছে কিনা তা পরীক্ষা করা উচিত। উপরন্তু, আপনার অ্যাপটি অভ্যন্তরীণ ART কাঠামোর উপর নির্ভর করে এমন কোনও লাইব্রেরির উপর নির্ভর করে যা আমরা চিহ্নিত করেছি কিনা তা দেখতে পরিচিত সমস্যাগুলি পরীক্ষা করুন। আপনার যদি অ্যাপ কোড বা লাইব্রেরি নির্ভরতা থাকে যা প্রভাবিত হয়, যখনই সম্ভব সর্বজনীন API বিকল্পগুলি সন্ধান করুন এবং আমাদের ইস্যু ট্র্যাকারে একটি বৈশিষ্ট্য অনুরোধ তৈরি করে নতুন ব্যবহারের ক্ষেত্রে সর্বজনীন APIগুলির জন্য অনুরোধ করুন৷

ব্যবহারকারীর অভিজ্ঞতা এবং সিস্টেম UI

Android 16-এ নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে যা আরও সামঞ্জস্যপূর্ণ, স্বজ্ঞাত ব্যবহারকারীর অভিজ্ঞতা তৈরি করার উদ্দেশ্যে করা হয়েছে৷

ব্যাঘাতমূলক অ্যাক্সেসিবিলিটি ঘোষণাগুলিকে অবজ্ঞা করা হচ্ছে

Android 16 deprecates accessibility announcements, characterized by the use of announceForAccessibility or the dispatch of TYPE_ANNOUNCEMENT accessibility events. These can create inconsistent user experiences for users of TalkBack and Android's screen reader, and alternatives better serve a broader range of user needs across a variety of Android's assistive technologies.

Examples of alternatives:

The reference documentation for the deprecated announceForAccessibility API includes more details about suggested alternatives.

3-বোতাম নেভিগেশন জন্য সমর্থন

Android 16 为已正确迁移到预测性返回的应用的三按钮导航栏引入了预测性返回支持。长按返回按钮会启动预测性返回动画,让您预览返回滑动手势会打开的界面。

此行为适用于系统中支持预测性返回动画的所有区域,包括系统动画(返回主屏幕、跨任务和跨 activity)。

“三按钮”导航模式下的预测性返回动画。