অ্যাপ স্ট্যান্ডবাই বাকেট

Android 9 (API লেভেল 28) এবং পরবর্তীতে অ্যাপ স্ট্যান্ডবাই বাকেট সমর্থন করে। অ্যাপ স্ট্যান্ডবাই বাকেটগুলি সম্প্রতি এবং কত ঘন ঘন অ্যাপগুলি ব্যবহার করা হয়েছে তার উপর ভিত্তি করে সংস্থানগুলির জন্য অ্যাপগুলির অনুরোধগুলিকে অগ্রাধিকার দিতে সহায়তা করে৷ অ্যাপ ব্যবহারের ধরণগুলির উপর ভিত্তি করে, প্রতিটি অ্যাপ পাঁচটি অগ্রাধিকার বালতির একটিতে স্থাপন করা হয়। অ্যাপটি কোন বালতিতে রয়েছে তার উপর ভিত্তি করে সিস্টেমটি প্রতিটি অ্যাপে উপলব্ধ ডিভাইস সংস্থানগুলিকে সীমাবদ্ধ করে।

অগ্রাধিকার বালতি

সিস্টেমটি গতিশীলভাবে প্রতিটি অ্যাপকে একটি অগ্রাধিকার বালতিতে বরাদ্দ করে, প্রয়োজন অনুসারে অ্যাপগুলিকে পুনরায় বরাদ্দ করে। সিস্টেমটি একটি প্রিলোড করা অ্যাপের উপর নির্ভর করতে পারে যা মেশিন লার্নিং ব্যবহার করে প্রতিটি অ্যাপ ব্যবহার করার সম্ভাবনা কতটা তা নির্ধারণ করে এবং অ্যাপগুলিকে উপযুক্ত বালতিতে বরাদ্দ করে।

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

অগ্রাধিকার বালতি নিম্নরূপ:

  • সক্রিয় : অ্যাপটি ব্যবহার করা হচ্ছে বা খুব সম্প্রতি ব্যবহার করা হয়েছে।
  • ওয়ার্কিং সেট : অ্যাপ নিয়মিত ব্যবহার করা হয়।
  • ঘন ঘন : অ্যাপটি প্রায়শই ব্যবহৃত হয় তবে প্রতিদিন নয়।
  • বিরল : অ্যাপটি প্রায়শই ব্যবহার করা হয় না।
  • সীমাবদ্ধ : অ্যাপ প্রচুর সিস্টেম রিসোর্স ব্যবহার করে বা অবাঞ্ছিত আচরণ প্রদর্শন করতে পারে।

এই অগ্রাধিকার বালতিগুলি ছাড়াও, এমন অ্যাপগুলির জন্য একটি বিশেষ কখনও বাকেট রয়েছে যা ইনস্টল করা আছে কিন্তু কখনও চালানো হয়নি৷ সিস্টেম এই অ্যাপগুলির উপর কঠোর বিধিনিষেধ আরোপ করে৷

নিম্নলিখিত বর্ণনা অ-ভবিষ্যদ্বাণীমূলক ক্ষেত্রে জন্য হয়. বিপরীতে, যখন ভবিষ্যদ্বাণীটি আচরণের পূর্বাভাস দিতে মেশিন লার্নিং ব্যবহার করে, তখন সাম্প্রতিক ব্যবহারের উপর ভিত্তি করে ব্যবহারকারীর পরবর্তী ক্রিয়াকলাপের প্রত্যাশায় বাকেটগুলি বেছে নেওয়া হয়। উদাহরণস্বরূপ, একটি সম্প্রতি ব্যবহৃত অ্যাপ বিরল বালতিতে শেষ হতে পারে কারণ মেশিন লার্নিং ভবিষ্যদ্বাণী করে যে অ্যাপটি কয়েক ঘন্টা ব্যবহার করা হবে না।

সক্রিয়

একটি অ্যাপ্লিকেশান সক্রিয় বালতিতে থাকে যখন এটি ব্যবহার করা হয়, খুব সম্প্রতি ব্যবহৃত হয়, বা যখন এটি নিম্নলিখিতগুলির মধ্যে যেকোনটি করে:

  • একটি কার্যকলাপ চালু করে।
  • একটি দীর্ঘ চলমান ফোরগ্রাউন্ড পরিষেবা চালায়।
  • একটি বিজ্ঞপ্তি থেকে ব্যবহারকারী দ্বারা ট্যাপ করা হয়.

যদি একটি অ্যাপ সক্রিয় বালতিতে থাকে, তবে সিস্টেমটি অ্যাপের কাজ বা অ্যালার্মগুলিতে কোনও সীমাবদ্ধতা রাখে না।

ব্যবহারকারীর মিথস্ক্রিয়া অ্যাপ্লিকেশানগুলিকে সক্রিয় হিসাবে বরাদ্দ করে৷

অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) এবং উচ্চতর, যখন ব্যবহারকারী নির্দিষ্ট উপায়ে আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করে, সিস্টেমটি অস্থায়ীভাবে আপনার অ্যাপটিকে সক্রিয় বালতিতে রাখে। ব্যবহারকারী আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করা বন্ধ করার পরে, সিস্টেম এটিকে ব্যবহারের ইতিহাসের উপর ভিত্তি করে একটি বালতিতে রাখে।

নিম্নলিখিত মিথস্ক্রিয়াগুলির উদাহরণ যা এই সিস্টেমের আচরণকে ট্রিগার করে:

  • ব্যবহারকারী আপনার অ্যাপ পাঠানো একটি বিজ্ঞপ্তিতে ট্যাপ করে।

  • ব্যবহারকারী একটি মিডিয়া বোতামে ট্যাপ করে আপনার অ্যাপের একটি অগ্রভাগের পরিষেবার সাথে ইন্টারঅ্যাক্ট করে৷

  • Android Automotive OS এর সাথে ইন্টারঅ্যাক্ট করার সময় ব্যবহারকারী আপনার অ্যাপের সাথে সংযোগ স্থাপন করে, যেখানে আপনার অ্যাপটি হয় একটি ফোরগ্রাউন্ড পরিষেবা বা CONNECTION_TYPE_PROJECTION ব্যবহার করে।

ওয়ার্কিং সেট

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

যদি একটি অ্যাপ ওয়ার্কিং সেটে থাকে, তবে সিস্টেমটি কাজ চালানোর এবং অ্যালার্ম ট্রিগার করার ক্ষমতার উপর হালকা বিধিনিষেধ আরোপ করে। বিস্তারিত জানার জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা দেখুন।

ঘন ঘন

একটি অ্যাপ ঘন ঘন বালতিতে থাকে যদি এটি নিয়মিত ব্যবহার করা হয় তবে অগত্যা প্রতিদিন নয়। উদাহরণস্বরূপ, একটি ওয়ার্কআউট-ট্র্যাকিং অ্যাপ যা ব্যবহারকারী জিমে চালান তা ঘন ঘন বালতিতে থাকতে পারে।

যদি একটি অ্যাপ ঘন ঘন বালতিতে থাকে, তবে সিস্টেমটি কাজ চালানো এবং অ্যালার্ম ট্রিগার করার ক্ষমতার উপর শক্তিশালী বিধিনিষেধ আরোপ করে। বিস্তারিত জানার জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা দেখুন।

বিরল

একটি অ্যাপ বিরল বালতিতে রয়েছে যদি এটি প্রায়শই ব্যবহার না করা হয়। উদাহরণ স্বরূপ, একটি হোটেল অ্যাপ যা ব্যবহারকারী শুধুমাত্র সেই হোটেলে থাকার সময়ই চালায় সেটি বিরল বালতিতে থাকতে পারে।

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

সীমাবদ্ধ

Android 12 (API লেভেল 31) এ যোগ করা এই বালতিটির সর্বনিম্ন অগ্রাধিকার এবং সব বালতির সর্বোচ্চ সীমাবদ্ধতা রয়েছে। সিস্টেমটি আপনার অ্যাপের আচরণ বিবেচনা করে, যেমন ব্যবহারকারী কতবার এটির সাথে ইন্টারঅ্যাক্ট করে, আপনার অ্যাপটিকে সীমাবদ্ধ বালতিতে রাখবেন কিনা তা সিদ্ধান্ত নিতে।

অ্যান্ড্রয়েড 13 (API লেভেল 33) এবং উচ্চতর ক্ষেত্রে, যদি না আপনার অ্যাপটি ছাড়ের জন্য যোগ্য না হয়, সিস্টেমটি নিম্নলিখিত পরিস্থিতিতে আপনার অ্যাপটিকে সীমাবদ্ধ বালতিতে রাখে:

  • ব্যবহারকারী নির্দিষ্ট সংখ্যক দিনের জন্য আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করে না। অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) এবং 12এল (এপিআই লেভেল 32) এ দিনের সংখ্যা 45। Android 13 দিনের সংখ্যা কমিয়ে 8 করে।

  • আপনার অ্যাপটি 24-ঘন্টার সময়কালে অত্যধিক সংখ্যক সম্প্রচার বা বাইন্ডিং আহ্বান করে।

যদি সিস্টেম আপনার অ্যাপকে সীমাবদ্ধ বালতিতে রাখে, তাহলে নিম্নলিখিত বিধিনিষেধগুলি প্রযোজ্য হবে:

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

সীমাবদ্ধ বালতি থেকে ছাড়

নিম্নলিখিত ধরনের অ্যাপ্লিকেশানগুলি সীমাবদ্ধ বালতিতে প্রবেশ করা এবং নিষ্ক্রিয়তা ট্রিগারকে বাইপাস করা থেকে অব্যাহতি দেওয়া হয়েছে, এমনকি Android 12 এবং উচ্চতর সংস্করণেও:

অগ্রাধিকার বালতি মূল্যায়ন

আপনার অ্যাপটি কোন বালতিতে বরাদ্দ করা হয়েছে তা পরীক্ষা করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:

  • getAppStandbyBucket() কল করুন।

  • একটি টার্মিনাল উইন্ডোতে নিম্নলিখিত কমান্ডটি চালান:

    adb shell am get-standby-bucket PACKAGE_NAME

যখনই এটি একটি অ্যাপ স্ট্যান্ডবাই বাকেট যার মান STANDBY_BUCKET_ACTIVE (10) এর চেয়ে বেশি হয় সিস্টেমটি আপনার অ্যাপটিকে থ্রোটল করে।

সেরা অনুশীলন

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

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

  • যদি অ্যাপটি একটি উচ্চ-অগ্রাধিকার ফায়ারবেস ক্লাউড মেসেজিং (FCM) বার্তা পাওয়ার পরে একটি বিজ্ঞপ্তি না দেখায়, তাহলে ব্যবহারকারী অ্যাপটির সাথে ইন্টারঅ্যাক্ট করতে পারবেন না এবং এইভাবে এটিকে সক্রিয় বালতিতে প্রচার করতে পারবেন। প্রকৃতপক্ষে, উচ্চ অগ্রাধিকার এফসিএম বার্তাগুলির একমাত্র উদ্দেশ্য হল ব্যবহারকারীর কাছে একটি বিজ্ঞপ্তি ঠেলে দেওয়া, তাই এই পরিস্থিতিটি ঘটবে না। 12L (API লেভেল 32) এবং তার নিচে, আপনি যদি অনুপযুক্তভাবে একটি FCM বার্তাকে উচ্চ অগ্রাধিকার হিসাবে চিহ্নিত করেন যখন এটি ব্যবহারকারীর ইন্টারঅ্যাকশন ট্রিগার না করে, তাহলে এটি ভবিষ্যতের বার্তাগুলিকে বঞ্চিত করতে পারে।

  • অ্যাপ্লিকেশানগুলি একাধিক প্যাকেজ জুড়ে বিভক্ত হলে, সেই প্যাকেজগুলি বিভিন্ন বালতিতে থাকতে পারে এবং বিভিন্ন অ্যাক্সেস স্তর থাকতে পারে৷ অ্যাপটি সঠিকভাবে আচরণ করছে কিনা তা নিশ্চিত করতে বিভিন্ন বালতিতে নির্ধারিত প্যাকেজগুলির সাথে এই অ্যাপগুলি পরীক্ষা করুন।