অ্যাপ হাইবারনেশন, অ্যাপ হাইবারনেশন, অ্যাপ হাইবারনেশন, অ্যাপ হাইবারনেশন

একজন সাধারণ অ্যান্ড্রয়েড ব্যবহারকারী তার ডিভাইসে ৫০টিরও বেশি অ্যাপ ইনস্টল করেন (ডিভাইসের র‍্যামের স্তর বাড়ার সাথে সাথে এই সংখ্যাও বৃদ্ধি পায়)। তবে, এই অ্যাপগুলোর একটি উল্লেখযোগ্য অংশ দীর্ঘ সময় ধরে ব্যবহারকারীর দ্বারা অব্যবহৃত থেকে যায়।

অ্যাপ হাইবারনেশন সেইসব অ্যাপকে হাইবারনেট করে যা ব্যবহারকারী কয়েক মাস ধরে ব্যবহার করেন না, যা অনেকটা পারমিশন অটো-রিভোকেশনের মতোই। এটি অ্যাপটিকে জোর করে বন্ধ করে দেয় এবং এমন একটি অবস্থায় রাখে যেখানে আমরা পারফরম্যান্সের পরিবর্তে স্টোরেজকে অপ্টিমাইজ করি। পারমিশন অটো-রিভোকেশনও এই অবস্থার সাথে অন্তর্ভুক্ত এবং সেটিংস -এ এগুলোর জন্য একই এক্সেমশন সেটিং রয়েছে। জোর করে বন্ধ করা অ্যাপ ব্যাকগ্রাউন্ডে কোনো জব বা অ্যালার্ট চালায় না এবং পুশ নোটিফিকেশন পাঠাতে পারে না। যখন ব্যবহারকারী আবার অ্যাপটি ব্যবহার করেন, তখন অ্যাপটি হাইবারনেশন থেকে বেরিয়ে আসে এবং জব/অ্যালার্ট/নোটিফিকেশনগুলো আবার স্বাভাবিকভাবে চলতে শুরু করে। অ্যাপটি হাইবারনেশনে যাওয়ার আগে যে জব/অ্যালার্ট/নোটিফিকেশনগুলো শিডিউল করা হয়েছিল, সেগুলো পুনরায় শিডিউল করতে হবে।

প্ল্যাটফর্ম পরিবর্তনকারী OEM-রা অ্যাপ হাইবারনেশন বাস্তবায়নের সাথে সাংঘর্ষিক হতে পারে। উদাহরণস্বরূপ

  • অ্যাপ ব্যবহারের সংজ্ঞা পরিবর্তন করলে অথবা AOSP-তে নেই এমন কোনো অ্যাপ চালু করার পদ্ধতি ব্যবহার করলে, তা অ্যাপ হাইবারনেশনের নির্ভুলতায় ব্যাঘাত ঘটাতে পারে।
  • অ্যাপ হাইবারনেশনের অনুরূপ কোনো OEM-এর নিজস্ব সীমাবদ্ধতা ব্যবস্থা একই ধরনের উদ্দেশ্য সাধন করতে পারে। যদিও উভয়েরই অস্তিত্ব থাকতে পারে, তবে এদের মধ্যে কিছু সাদৃশ্য থাকতে পারে।

CDD, বিদ্যমান 3.5.1 আবশ্যকতার অনুরূপ, অ্যাপ ব্যবহারের উপর ভিত্তি করে পরিবর্তনের জন্য নতুন একগুচ্ছ আবশ্যকতার রূপরেখা দিয়েছে। অ্যাপ হাইবারনেশন এই আবশ্যকতাগুলো অনুসরণ করে।

ফ্রেমওয়ার্ক কোডটি এখানে থাকে:

নীতির যুক্তিটি এখানে নিহিত:

  • রিপো: প্ল্যাটফর্ম/প্যাকেজ/মডিউল/অনুমতি
  • ডিরেক্টরি: PermissionController/src/com/android/permissioncontroller/hibernation

উচ্চ-স্তরের স্থাপত্য

অ্যাপ হাইবারনেশন সিস্টেম সার্ভিস ব্যবহারকারীর কম ব্যবহৃত অ্যাপগুলোকে স্টোরেজের জন্য অপ্টিমাইজ করে এবং সেগুলোকে ব্যাকগ্রাউন্ডে চলতে বাধা দেয়। এই ফলাফলগুলো অর্জন করার জন্য, যখন আমরা কোনো অ্যাপকে হাইবারনেট করি, তখন আমরা বিশেষভাবে:

  • স্বয়ংক্রিয়ভাবে প্রত্যাহার করা অনুমতি
  • অ্যাপটি জোর করে বন্ধ করুন
  • ODEX এবং VDEX ফাইলগুলো মুছে ফেলুন
  • অ্যাপের ক্যাশে মুছে ফেলুন

আমাদের লক্ষ্য হলো হাইবারনেশনকে একটি প্রত্যাবর্তনযোগ্য ব্যবস্থা হিসেবে বাস্তবায়ন করা, যাতে অ্যাপের ডেটা অক্ষত অবস্থায় লঞ্চার এবং অন্যান্য প্ল্যাটফর্মে ব্যবহারকারীর কাছে অ্যাপটি উপলব্ধ থাকে। অ্যাপটি চালু করার পর, আমরা এটিকে ফোর্স-স্টপ অবস্থা থেকে পুনরুদ্ধার করব এবং যথারীতি ODEX ও VDEX ফাইল তৈরির কাজ চালিয়ে যাব।

পরিকল্পিত নকশাটি দুটি প্রধান অংশকে কেন্দ্র করে তৈরি হয়েছে:

  • কখন একটি প্যাকেজ হাইবারনেট করবে তা নির্ধারণ করা
  • হাইবারনেটিং প্যাকেজ অপ্টিমাইজ করা

PermissionController মধ্যে থাকা একটি নতুন সিস্টেম সার্ভিস, AppHibernationService , এবং একটি জব সার্ভিস, AppHibernationJobService, হলো সেই মূল সংযোগকারী যা সামগ্রিক সিদ্ধান্ত গ্রহণ এবং লজিক নিয়ন্ত্রণ করে।

একটি প্যাকেজ কখন হাইবারনেট করবে তা নির্ধারণ করার কাজটি মূলত UsageStatsService দ্বারা চালিত হয় এবং PermissionController এর AppHibernationJobService দ্বারা পরিচালিত হয়। এই পলিসি লজিকটি PermissionController এ থাকে, যাতে আমরা Mainline-এর মাধ্যমে এটিকে ডায়নামিকভাবে আপডেট করতে পারি। এছাড়াও, আমরা UsageStatsService এ একটি নতুন মেট্রিক হিসেবে প্যাকেজের কম্পোনেন্টগুলোর (যেমন, সার্ভিস, কন্টেন্ট প্রোভাইডার) ব্যবহার ক্যাপচার করার জন্য ‘কম্পোনেন্ট ইউসেজ’ নামে একটি নতুন সিগন্যাল যোগ করার পরিকল্পনা করছি।

একটি প্যাকেজ অপ্টিমাইজ করার মাধ্যমেই সমস্ত প্রকৃত সাশ্রয় এবং অপ্টিমাইজেশন ঘটে থাকে। AppHibernationService সিস্টেমের বিভিন্ন অংশের সাথে যোগাযোগ করে প্যাকেজটি বন্ধ করতে, ক্যাশে ডেটা মুছে ফেলতে, ART আর্টিফ্যাক্ট মুছে ফেলতে, ইত্যাদি কাজ করে থাকে। Android 11 এবং এর নিচের ডিভাইসগুলিতে অটো-রিভোক কার্যকারিতা বজায় রাখার জন্য AppHibernationJobService থেকে সরাসরি অনুমতি প্রত্যাহারের প্রক্রিয়া শুরু করা হয়।

ব্যবহারকারীর অভিজ্ঞতা

কোন অ্যাপগুলোকে হাইবারনেট করা যাবে, সে বিষয়ে ব্যবহারকারীকে তথ্য এবং নিয়ন্ত্রণ উভয়ই প্রদান করা হয়।

অটো-রিভোকের মতোই, ব্যবহারকারী কোন অ্যাপগুলো হাইবারনেট করা আছে সে সম্পর্কে একটি নোটিফিকেশন পান এবং সেই নোটিফিকেশন থেকেই সরাসরি সেটিংসে গিয়ে অ্যাপটি খুলে হাইবারনেশন থেকে বের করে আনার অথবা প্রয়োজনে অব্যবহৃত অ্যাপটি ডিলিট করার সুযোগ পান।

আমরা বিদ্যমান পারমিশন অটো-রিভোক এক্সেমশন ইন্টেন্টের মাধ্যমে হাইবারনেশন থেকে ব্যবহারকারীর কাছে অব্যাহতি চাওয়ার ডেভেলপারের উদ্দেশ্যকে সমর্থন করে চলেছি।

পশ্চাৎ সামঞ্জস্যতা

অ্যান্ড্রয়েড ১২ থেকে হাইবারনেশন-এর বিশেষ ফিচারগুলো পাওয়া যাচ্ছে। এর আগের সংস্করণগুলোতে এই ফিচারটি কাজ করতে পারত না, কারণ সেগুলোতে প্ল্যাটফর্মের উপাদানগুলো (যেমন নতুন সিস্টেম সার্ভিস) উপস্থিত ছিল না। আগের ওএস সংস্করণগুলোতে যেভাবে অটো-রিভোক ফিচারটি চালু ছিল, তা আগের মতোই কাজ করে চলেছে।

অ্যান্ড্রয়েড ১২ থেকে, পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যতা (backward compatibility) নিশ্চিত করার জন্য, সেটিংস ( Settings)- এর 'অ্যাপস ও নোটিফিকেশন' (Apps & notifications) অংশের অধীনে অ্যাপের পেজে একটি হাইবারনেশন টগল যোগ করা হয়েছে এবং একই সাথে ' পারমিশন' (Permissions ) সাব-মেনুর মধ্যে থাকা মূল অটো-রিভোক টগলটিও রাখা হয়েছে। এই টগলটি অ্যাপটির জন্য সামগ্রিক হাইবারনেশন সিস্টেম থেকে অব্যাহতি নিয়ন্ত্রণ করে।

কাস্টমাইজেশন

বাস্তবায়নের কিছু অংশ মডিউলার সিস্টেম উপাদানের অন্তর্ভুক্ত, তাই অংশীদারদের এই বৈশিষ্ট্যটি পরিবর্তন করতে নিরুৎসাহিত করা হচ্ছে। এর পরিবর্তে, অংশীদাররা সিডিডি (CDD) প্রয়োজনীয়তাগুলো অনুসরণ করে অনুরূপ বৈশিষ্ট্য বা কার্যকারিতা বাস্তবায়ন করতে পারেন।

অ্যান্ড্রয়েড ১১ বা তার উচ্চতর সংস্করণের জন্য তৈরি সমস্ত অ্যাপের ক্ষেত্রে অ্যাপ হাইবারনেশন ডিফল্টভাবে চালু থাকা উচিত। এটি পারমিশন অটো-রিভোকের মতোই। যদিও সেটিংটি নিজে চালু থাকতে পারে, অ্যান্ড্রয়েড ১১ এবং অ্যান্ড্রয়েড ১২-এর জন্য তৈরি অ্যাপগুলোর ক্ষেত্রে অ্যাপ হাইবারনেশনের বাস্তবায়ন ভিন্ন হতে পারে। আরও নির্দিষ্টভাবে বললে, অ্যাপ হাইবারনেশন শুধুমাত্র অ্যান্ড্রয়েড ১১-এর জন্য তৈরি অ্যাপগুলোতে কাজ করে, যেখানে অ্যান্ড্রয়েড ১২-এর জন্য তৈরি অ্যাপগুলোর ক্ষেত্রে এটি মূলত একটি অটো-রিভোক মাত্র।

এছাড়াও, OEM-রা একটি অনুরূপ বৈশিষ্ট্য প্রয়োগ করতে পারে। তবে, সেই বৈশিষ্ট্যগুলি ব্যাটারি অপ্টিমাইজেশনের জন্য অনেক কম সময়ের মধ্যে তৈরি করা হয়, যা OEM-নির্দিষ্ট হতে পারে। OEM-দের দ্বারা তৈরি যেকোনো অনুরূপ অ্যাপ সীমাবদ্ধতার বৈশিষ্ট্য অ্যাপ হাইবারনেশন সিস্টেমের সাথে সহাবস্থান করতে পারে, যতক্ষণ পর্যন্ত সেগুলি CDD- তে সংজ্ঞায়িত বিদ্যমান মানদণ্ড পূরণ করে।

পরীক্ষা

অ্যাপ হাইবারনেশন সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য CTS এবং ইউনিট টেস্ট রয়েছে।