অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) ডিভাইস পাওয়ার ম্যানেজমেন্ট উন্নত করতে নতুন বৈশিষ্ট্যগুলি প্রবর্তন করে৷ এই পরিবর্তনগুলি, পূর্ববর্তী সংস্করণগুলিতে ইতিমধ্যে উপস্থিত থাকা বৈশিষ্ট্যগুলির সাথে, সিস্টেম সংস্থানগুলি যে অ্যাপগুলির সবচেয়ে বেশি প্রয়োজন তাদের দেওয়া হয়েছে তা নিশ্চিত করতে সহায়তা করে৷
পাওয়ার-ম্যানেজমেন্ট বৈশিষ্ট্য দুটি বিভাগে পড়ে:
- অ্যাপ স্ট্যান্ডবাই বালতি
- সিস্টেমটি ব্যবহারকারীর ব্যবহারের ধরণগুলির উপর ভিত্তি করে CPU বা ব্যাটারির মতো ডিভাইস সংস্থানগুলিতে অ্যাপগুলির অ্যাক্সেস সীমিত করে। এটি Android 9 এর জন্য একটি নতুন বৈশিষ্ট্য।
- ব্যাটারি সেভারের উন্নতি
- যখন ব্যাটারি সেভার চালু থাকে, তখন সিস্টেম সমস্ত অ্যাপে সীমাবদ্ধতা রাখে। এটি একটি বিদ্যমান বৈশিষ্ট্য যা Android 9 এর সাথে উন্নত।
অ্যাপ স্ট্যান্ডবাই বাকেট
অ্যান্ড্রয়েড 9 একটি নতুন ব্যাটারি ব্যবস্থাপনা বৈশিষ্ট্য, অ্যাপ স্ট্যান্ডবাই বাকেট প্রবর্তন করেছে। অ্যাপ স্ট্যান্ডবাই বাকেটগুলি সম্প্রতি এবং কত ঘন ঘন অ্যাপগুলি ব্যবহার করা হয়েছে তার উপর ভিত্তি করে সংস্থানগুলির জন্য অ্যাপ্লিকেশনগুলির অনুরোধগুলিকে অগ্রাধিকার দিতে সিস্টেমকে সহায়তা করে৷ অ্যাপ ব্যবহারের ধরণগুলির উপর ভিত্তি করে, প্রতিটি অ্যাপ পাঁচটি অগ্রাধিকার বালতির একটিতে স্থাপন করা হয়। অ্যাপটি কোন বালতিতে রয়েছে তার উপর ভিত্তি করে সিস্টেমটি প্রতিটি অ্যাপে উপলব্ধ ডিভাইস সংস্থানগুলিকে সীমাবদ্ধ করে।
পাঁচটি বালতি নিম্নলিখিত বৈশিষ্ট্যগুলির দ্বারা গোষ্ঠীগুলিতে অ্যাপগুলিকে অগ্রাধিকার দেয়:
- সক্রিয়
একটি অ্যাপ সক্রিয় বালতিতে রয়েছে যদি ব্যবহারকারী বর্তমানে অ্যাপটি ব্যবহার করছেন, উদাহরণস্বরূপ:
- অ্যাপটি একটি কার্যক্রম চালু করেছে
- অ্যাপটি একটি ফোরগ্রাউন্ড পরিষেবা চালাচ্ছে
- অ্যাপটিতে একটি ফোরগ্রাউন্ড অ্যাপ দ্বারা ব্যবহৃত একটি সামগ্রী প্রদানকারীর সাথে যুক্ত একটি সিঙ্ক অ্যাডাপ্টার রয়েছে৷
- ব্যবহারকারী অ্যাপ থেকে একটি বিজ্ঞপ্তিতে ক্লিক করে
যদি একটি অ্যাপ সক্রিয় বালতিতে থাকে, তবে সিস্টেম অ্যাপটির কাজ, অ্যালার্ম বা FCM বার্তাগুলিতে কোনও সীমাবদ্ধতা রাখে না।
- ওয়ার্কিং সেট
একটি অ্যাপ ওয়ার্কিং সেট বাকেটের মধ্যে থাকে যদি এটি প্রায়ই চলে তবে এটি বর্তমানে সক্রিয় নয়। উদাহরণ স্বরূপ, একটি সোশ্যাল মিডিয়া অ্যাপ যা ব্যবহারকারী বেশিরভাগ দিন চালু করেন সেটি কার্যকারী সেটে থাকতে পারে। অ্যাপগুলি যদি পরোক্ষভাবে ব্যবহার করা হয় তবে কাজ সেট বালতিতেও উন্নীত হয়।
যদি একটি অ্যাপ ওয়ার্কিং সেটে থাকে, তবে সিস্টেমটি কাজ চালানোর এবং অ্যালার্ম ট্রিগার করার ক্ষমতার উপর হালকা বিধিনিষেধ আরোপ করে। বিস্তারিত জানার জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা দেখুন।
- ঘন ঘন
একটি অ্যাপ ঘন ঘন বালতিতে থাকে যদি এটি নিয়মিত ব্যবহার করা হয়, তবে অগত্যা প্রতিদিন নয়। উদাহরণস্বরূপ, একটি ওয়ার্কআউট-ট্র্যাকিং অ্যাপ যা ব্যবহারকারী জিমে চালান তা ঘন ঘন বালতিতে থাকতে পারে।
যদি একটি অ্যাপ ঘন ঘন বালতিতে থাকে, তবে সিস্টেমটি কাজ চালানোর এবং অ্যালার্ম ট্রিগার করার ক্ষমতার উপর শক্তিশালী বিধিনিষেধ আরোপ করে এবং উচ্চ-প্রধান FCM বার্তাগুলির উপর একটি ক্যাপ আরোপ করে। বিস্তারিত জানার জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা দেখুন।
- বিরল
একটি অ্যাপ বিরল বালতিতে রয়েছে যদি এটি প্রায়শই ব্যবহার না করা হয়। উদাহরণ স্বরূপ, একটি হোটেল অ্যাপ যেটি ব্যবহারকারী শুধুমাত্র সেই হোটেলে থাকার সময় চালান সেটি বিরল বালতিতে থাকতে পারে।
যদি একটি অ্যাপ বিরল বালতিতে থাকে, তবে সিস্টেমটি কাজ চালানো, অ্যালার্ম ট্রিগার এবং উচ্চ-প্রধান FCM বার্তা গ্রহণ করার ক্ষমতার উপর কঠোর বিধিনিষেধ আরোপ করে। সিস্টেমটি অ্যাপের ইন্টারনেটের সাথে সংযোগ করার ক্ষমতাকেও সীমাবদ্ধ করে। বিস্তারিত জানার জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা দেখুন।
- কখনই না
যে অ্যাপগুলি ইন্সটল করা হয়েছে কিন্তু কখনই চালানো হয় না সেগুলি নেভার বালতিতে বরাদ্দ করা হয়। সিস্টেম এই অ্যাপগুলির উপর কঠোর বিধিনিষেধ আরোপ করে৷
সিস্টেমটি গতিশীলভাবে প্রতিটি অ্যাপকে একটি অগ্রাধিকার বালতিতে বরাদ্দ করে এবং প্রয়োজন অনুসারে অ্যাপগুলিকে পুনরায় বরাদ্দ করে। সিস্টেমটি একটি প্রিলোড করা অ্যাপের উপর নির্ভর করতে পারে যা মেশিন লার্নিং ব্যবহার করে প্রতিটি অ্যাপ ব্যবহার করার সম্ভাবনা কতটা তা নির্ধারণ করে এবং অ্যাপগুলিকে উপযুক্ত বালতিতে বরাদ্দ করে। যদি সিস্টেম অ্যাপটি একটি ডিভাইসে উপস্থিত না থাকে, তবে সিস্টেমটি অ্যাপগুলিকে কীভাবে সম্প্রতি ব্যবহার করা হয়েছে তার উপর ভিত্তি করে সাজানোর জন্য ডিফল্ট করে৷ আরও সক্রিয় অ্যাপগুলিকে বালতিতে বরাদ্দ করা হয় যা অ্যাপগুলিকে উচ্চতর অগ্রাধিকার দেয়, অ্যাপটিতে আরও সিস্টেম সংস্থান উপলব্ধ করে। বিশেষ করে, অ্যাপের কাজগুলি কত ঘনঘন চলবে, অ্যাপটি কত ঘন ঘন অ্যালার্ম ট্রিগার করতে পারে এবং কত ঘন ঘন অ্যাপটি উচ্চ-অগ্রাধিকার ফায়ারবেস ক্লাউড মেসেজিং (FCM) বার্তা পেতে পারে তা নির্ধারণ করে। এই বিধিনিষেধগুলি শুধুমাত্র তখনই প্রযোজ্য যখন ডিভাইসটি ব্যাটারি পাওয়ারে থাকে; ডিভাইস চার্জ করার সময় সিস্টেম অ্যাপের উপর এই বিধিনিষেধ আরোপ করে না।
প্রতিটি প্রস্তুতকারক তাদের নিজস্ব মানদণ্ড সেট করতে পারে যে কীভাবে অ-সক্রিয় অ্যাপগুলিকে বালতিতে বরাদ্দ করা হয়। আপনার অ্যাপটি কোন বালতিতে বরাদ্দ করা হয়েছে তা প্রভাবিত করার চেষ্টা করা উচিত নয়। পরিবর্তে, আপনার অ্যাপটি যে বালতির মধ্যেই থাকুক না কেন ভাল আচরণ করছে তা নিশ্চিত করার দিকে মনোনিবেশ করুন। নতুন পদ্ধতি UsageStatsManager.getAppStandbyBucket()
কল করে আপনার অ্যাপটি বর্তমানে এটি কোন বালতিতে রয়েছে তা জানতে পারে।
সর্বোত্তম অনুশীলন
যদি আপনার অ্যাপ ইতিমধ্যেই Doze এবং অ্যাপ স্ট্যান্ডবাই- এর জন্য সেরা অনুশীলনগুলি অনুসরণ করে থাকে, তাহলে নতুন পাওয়ার ম্যানেজমেন্ট বৈশিষ্ট্যগুলি পরিচালনা করা কঠিন হবে না। যাইহোক, কিছু অ্যাপ আচরণ যা আগে ভাল কাজ করেছিল এখন সমস্যা হতে পারে।
- আপনার অ্যাপটিকে এক বালতিতে বা অন্য বালতিতে রাখার জন্য সিস্টেমটিকে ম্যানিপুলেট করার চেষ্টা করবেন না। সিস্টেমের বাকেটিং পদ্ধতিগুলি পরিবর্তিত হতে পারে এবং প্রতিটি ডিভাইস প্রস্তুতকারক তাদের নিজস্ব অ্যালগরিদম দিয়ে তাদের নিজস্ব বাকেটিং অ্যাপ লিখতে বেছে নিতে পারে। পরিবর্তে, নিশ্চিত করুন যে আপনার অ্যাপটি কোন বালতিতে থাকুক না কেন যথাযথভাবে আচরণ করছে।
- যদি কোনো অ্যাপে লঞ্চার অ্যাক্টিভিটি না থাকে, তাহলে এটি কখনোই সক্রিয় বালতিতে উন্নীত নাও হতে পারে। আপনি এই ধরনের একটি কার্যকলাপ আছে আপনার অ্যাপ্লিকেশন পুনরায় ডিজাইন করতে চাইতে পারেন.
- যদি অ্যাপের বিজ্ঞপ্তিগুলি কার্যকর না হয়, ব্যবহারকারীরা বিজ্ঞপ্তিগুলির সাথে ইন্টারঅ্যাক্ট করে অ্যাপ্লিকেশানের প্রচার সক্রিয় বালতিতে ট্রিগার করতে সক্ষম হবেন না৷ এই ক্ষেত্রে, আপনি কিছু উপযুক্ত বিজ্ঞপ্তি পুনরায় ডিজাইন করতে চাইতে পারেন যাতে তারা ব্যবহারকারীর কাছ থেকে প্রতিক্রিয়ার অনুমতি দেয়। কিছু নির্দেশিকাগুলির জন্য, মেটেরিয়াল ডিজাইন নোটিফিকেশন ডিজাইন প্যাটার্ন দেখুন।
একইভাবে, যদি অ্যাপটি একটি উচ্চ-প্রধান FCM বার্তা পাওয়ার পরে একটি বিজ্ঞপ্তি না দেখায়, তাহলে এটি ব্যবহারকারীকে অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেবে না এবং এইভাবে এটিকে সক্রিয় বালতিতে প্রচার করবে। প্রকৃতপক্ষে, উচ্চ-অগ্রাধিকার এফসিএম বার্তাগুলির একমাত্র উদ্দেশ্য হল ব্যবহারকারীর কাছে একটি বিজ্ঞপ্তি পাঠানো, তাই এই পরিস্থিতি কখনই ঘটবে না। আপনি যদি অনুপযুক্তভাবে একটি FCM বার্তাকে উচ্চ-অগ্রাধিকার হিসাবে চিহ্নিত করেন যখন এটি ব্যবহারকারীর মিথস্ক্রিয়াকে ট্রিগার না করে, তবে এটি অন্যান্য নেতিবাচক পরিণতির কারণ হতে পারে; উদাহরণস্বরূপ, এর ফলে আপনার অ্যাপের কোটা শেষ হয়ে যেতে পারে, যার ফলে সত্যিকারের জরুরী FCM বার্তাগুলিকে স্বাভাবিক-অগ্রাধিকার হিসাবে বিবেচনা করা হবে।
দ্রষ্টব্য: যদি ব্যবহারকারী বারবার একটি বিজ্ঞপ্তি খারিজ করে, সিস্টেম ব্যবহারকারীকে ভবিষ্যতে সেই বিজ্ঞপ্তিটি ব্লক করার বিকল্প দেয়। আপনার অ্যাপটিকে সক্রিয় বালতিতে রাখার চেষ্টা করার জন্য ব্যবহারকারীকে বিজ্ঞপ্তি দিয়ে স্প্যাম করবেন না!
অ্যাপগুলি একাধিক প্যাকেজ জুড়ে বিভক্ত হলে, সেই প্যাকেজগুলি বিভিন্ন বালতিতে থাকতে পারে এবং এইভাবে, বিভিন্ন অ্যাক্সেসের স্তর থাকতে পারে। অ্যাপটি সঠিকভাবে আচরণ করছে কিনা তা নিশ্চিত করতে আপনার বিভিন্ন বালতিতে নির্ধারিত প্যাকেজগুলির সাথে এই জাতীয় অ্যাপগুলি পরীক্ষা করা উচিত।
ব্যাটারি সেভারের উন্নতি
অ্যান্ড্রয়েড 9 ব্যাটারি সেভার মোডে অনেক উন্নতি করে। ডিভাইস প্রস্তুতকারক আরোপিত সুনির্দিষ্ট সীমাবদ্ধতা নির্ধারণ করে। উদাহরণস্বরূপ, AOSP বিল্ডগুলিতে, সিস্টেমটি নিম্নলিখিত বিধিনিষেধগুলি প্রয়োগ করে:
- অ্যাপটি নিষ্ক্রিয় হওয়ার জন্য অপেক্ষা করার পরিবর্তে সিস্টেমটি অ্যাপগুলিকে আরও আক্রমণাত্মকভাবে অ্যাপ স্ট্যান্ডবাই মোডে রাখে।
- ব্যাকগ্রাউন্ড এক্সিকিউশন লিমিট সব অ্যাপে প্রযোজ্য, তাদের টার্গেট API লেভেল নির্বিশেষে।
- স্ক্রীন বন্ধ থাকলে অবস্থান পরিষেবাগুলি অক্ষম হতে পারে৷
- ব্যাকগ্রাউন্ড অ্যাপের নেটওয়ার্ক অ্যাক্সেস নেই।
উপরন্তু, অন্যান্য, ডিভাইস-নির্দিষ্ট পাওয়ার অপ্টিমাইজেশান আছে। সম্পূর্ণ বিবরণের জন্য, পাওয়ার ম্যানেজমেন্ট সীমাবদ্ধতা বর্ণনা করে এমন পৃষ্ঠাটি দেখুন।
সর্বদা হিসাবে, ব্যাটারি সেভার সক্রিয় থাকাকালীন আপনার অ্যাপ পরীক্ষা করা একটি ভাল ধারণা৷ আপনি ডিভাইসের সেটিংস > ব্যাটারি সেভার স্ক্রীনের মাধ্যমে ম্যানুয়ালি ব্যাটারি সেভার চালু করতে পারেন।
পরীক্ষা এবং সমস্যা সমাধান
নতুন পাওয়ার ম্যানেজমেন্ট বৈশিষ্ট্যগুলি Android 9 ডিভাইসে চলমান সমস্ত অ্যাপকে প্রভাবিত করে, অ্যাপগুলি Android 9-কে টার্গেট করুক বা না করুক। আপনার অ্যাপ এই ডিভাইসগুলিতে সঠিকভাবে আচরণ করছে তা নিশ্চিত করা গুরুত্বপূর্ণ।
পাওয়ার ম্যানেজমেন্ট বৈশিষ্ট্যগুলি একে অপরের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তা দেখতে বিভিন্ন পরিস্থিতিতে আপনার অ্যাপের প্রধান ব্যবহারের ক্ষেত্রে পরীক্ষা করতে ভুলবেন না। আপনি কিছু বৈশিষ্ট্য চালু এবং বন্ধ করতে অ্যান্ড্রয়েড ডিবাগ ব্রিজ কমান্ড ব্যবহার করতে পারেন।
অ্যান্ড্রয়েড ডিবাগ ব্রিজ কমান্ড
আপনি বেশ কয়েকটি পাওয়ার ম্যানেজমেন্ট বৈশিষ্ট্য পরীক্ষা করতে Android ডিবাগ ব্রিজ শেল কমান্ড ব্যবহার করতে পারেন।
ADB ব্যবহার করে আপনার ডিভাইসকে Doze এ রাখার বিষয়ে তথ্যের জন্য, Doze এর সাথে টেস্টিং এবং অ্যাপ স্ট্যান্ডবাই দেখুন।
অ্যাপ স্ট্যান্ডবাই বাকেট
আপনি ADB ব্যবহার করে আপনার অ্যাপটিকে একটি অ্যাপ স্ট্যান্ডবাই বালতিতে ম্যানুয়ালি বরাদ্দ করতে পারেন। একটি অ্যাপের বালতি পরিবর্তন করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
$ adb shell am set-standby-bucket packagename active|working_set|frequent|rare
আপনি একবারে একাধিক প্যাকেজ সেট করতে সেই কমান্ডটি ব্যবহার করতে পারেন:
$ adb shell am set-standby-bucket package1 bucket1 package2 bucket2...
একটি অ্যাপ কোন বালতিতে আছে তা পরীক্ষা করতে চালান
$ adb shell am get-standby-bucket [packagename]
আপনি যদি packagename প্যারামিটারটি পাস না করেন, কমান্ডটি সমস্ত অ্যাপের জন্য বালতি তালিকাভুক্ত করে। নতুন পদ্ধতি UsageStatsManager.getAppStandbyBucket()
এ কল করে একটি অ্যাপ রানটাইমে তার বালতিও খুঁজে পেতে পারে।
ব্যাটারি সেভার
কম-পাওয়ার অবস্থায় আপনার অ্যাপ কীভাবে আচরণ করে তা পরীক্ষা করার জন্য বেশ কয়েকটি কমান্ড রয়েছে।
আনপ্লাগ করা ডিভাইসটি অনুকরণ করতে, কমান্ডটি ব্যবহার করুন
$ adb shell dumpsys battery unplug
কম শক্তির পরিস্থিতিতে ডিভাইসটি কীভাবে আচরণ করে তা পরীক্ষা করতে, এই কমান্ডটি ব্যবহার করুন:
$ adb shell settings put global low_power 1
একবার আপনি আপনার পরীক্ষা শেষ করলে, আপনি এই কমান্ডের মাধ্যমে আপনার ম্যানুয়াল ডিভাইস সেটিংস পূর্বাবস্থায় ফিরিয়ে আনতে পারেন:
$ adb shell dumpsys battery reset