Doze Mode হল Android-এর একটি শক্তি সাশ্রয় বৈশিষ্ট্য, যা সংস্করণ 6.0 Marshmallow-এ চালু করা হয়েছিল, যা ডিভাইস নিষ্ক্রিয় থাকাকালীন অ্যাপ্লিকেশনগুলির পটভূমি কার্যকলাপকে উল্লেখযোগ্যভাবে সীমাবদ্ধ করে। সিস্টেম অ্যাপ্লিকেশনগুলিকে হ্রাসকৃত শক্তি খরচের অবস্থায় নিয়ে যায়, নেটওয়ার্ক অনুরোধ, সিঙ্ক্রোনাইজেশন এবং JobScheduler স্থগিত করে ব্যাটারির আয়ু বাড়ানোর জন্য। Android Developers, 2025-এর বিশ্লেষণ অনুসারে, Doze Mode মডেল এবং OS সংস্করণের উপর নির্ভর করে ডিভাইসের স্ট্যান্ডবাই সময় 2–3 গুণ বাড়াতে পারে।
মূল বিষয়
Doze Mode হল Android-এর একটি অন্তর্নির্মিত শক্তি সাশ্রয় প্রক্রিয়া যা সক্রিয় হয় যখন ডিভাইসটি চার্জারের সাথে সংযুক্ত নয়, স্ক্রিন বন্ধ থাকে এবং ব্যবহারকারী একটি নির্দিষ্ট সময়ের জন্য ডিভাইসের সাথে যোগাযোগ করেনি। Doze-এর লক্ষ্য হল স্ট্যান্ডবাই মোডে ব্যাটারির আয়ু সর্বাধিক করার জন্য অ্যাপ্লিকেশনগুলির পটভূমি কার্যকলাপ হ্রাস করা। সিস্টেম JobScheduler, অ্যাকাউন্ট সিঙ্ক্রোনাইজেশন, AlarmManager এবং নেটওয়ার্ক অনুরোধ স্থগিত করে।
মোডটি Android 6.0 Marshmallow (API 23)-এ চালু করা হয়েছিল এবং পরবর্তী সংস্করণগুলিতে উল্লেখযোগ্যভাবে উন্নত করা হয়েছিল। Android 7.0 Nougat একটি দ্বিতীয় ধাপ (Light Doze) চালু করেছে যা ডিভাইস চলাকালীন সক্রিয় হয়। Android 8.0 Doze-এর সাথে কাজ করে এমন পটভূমি পরিষেবাগুলিতে অতিরিক্ত বিধিনিষেধ যুক্ত করেছে। Android 12+-এ, Doze ব্যবহারকারীর আচরণ বিশ্লেষণ করে এমন একটি আপডেট করা ব্যাটারি ব্যবস্থাপনা সিস্টেম-এর সাথে সংহত করা হয়েছিল।
এটি বোঝা গুরুত্বপূর্ণ: Doze Mode অ্যাপ্লিকেশনগুলিকে সম্পূর্ণরূপে নিষ্ক্রিয় করে না। এটি তাদের স্থগিত কাজের অবস্থায় রাখে, কিন্তু প্রক্রিয়াগুলি শেষ করে না। একটি বিজ্ঞপ্তি সহ Foreground Service কাজ চালিয়ে যায়, উচ্চ-অগ্রাধিকার push বিজ্ঞপ্তি (FCM high-priority) বিতরণ করা হয় এবং অ্যালার্ম সময়সূচী অনুযায়ী বাজে। Doze কেবল পটভূমি অপারেশনগুলিকে প্রভাবিত করে যা ব্যবহারকারী সেই মুহূর্তে দেখে না বা আশা করে না।
Doze Mode সমস্ত শর্ত পূরণ হলে সক্রিয় হয়: স্ক্রিন 30 মিনিটের বেশি বন্ধ (প্রথম সক্রিয়করণ), ডিভাইসটি স্থির (অ্যাক্সেলেরোমিটার ব্যবহার করে), এবং চার্জারের সাথে সংযুক্ত নয়। যদি ব্যবহারকারী ফোন তোলে বা চার্জার সংযুক্ত করে, Doze অবিলম্বে নিষ্ক্রিয় হয়। Android 7+-এ, Light Doze ডিভাইস চললেও মাত্র 5 মিনিট নিষ্ক্রিয়তার পরে সক্রিয় হয়।
Doze Mode সিস্টেম পরিষেবা DeviceIdleController-এর মাধ্যমে পটভূমি কার্যকলাপ পরিচালনা করে, যা সেন্সর, স্ক্রিন এবং চার্জারের অবস্থা বিশ্লেষণ করে। যখন সমস্ত সক্রিয়করণ শর্ত পূরণ হয়, সিস্টেম অ্যাপ্লিকেশনগুলিকে স্ট্যান্ডবাই মোডে রাখে, তাদের অনুরোধগুলি রক্ষণাবেক্ষণ উইন্ডোতে গ্রুপ করে। এই উইন্ডোগুলির ভিতরে, সমস্ত স্থগিত কাজ — নেটওয়ার্ক কল, সিঙ্ক্রোনাইজেশন, AlarmManager — একটি ব্যাচে সম্পাদিত হয়।
সিস্টেম PowerManager নিয়ন্ত্রণ করে কোন অ্যাপ্লিকেশনগুলি Doze থেকে বের হতে পারে। উচ্চ-অগ্রাধিকার push বিজ্ঞপ্তি (FCM high-priority) একটি বার্তা বিতরণ করতে ডিভাইস জাগাতে পারে। সিস্টেম Doze-কে উপেক্ষা করে সেই অ্যাপ্লিকেশনগুলির জন্য যা ব্যবহারকারী ব্যাটারি অপ্টিমাইজেশন Whitelist-এ যোগ করেছেন। অন্যান্য সমস্ত অ্যাপ্লিকেশনকে পরবর্তী রক্ষণাবেক্ষণ উইন্ডোর জন্য অপেক্ষা করতে হবে।
Deep Doze-এ রক্ষণাবেক্ষণ উইন্ডোর সময় দ্রুতগতিতে বৃদ্ধি পায়: প্রথম উইন্ডো 1 ঘন্টা পরে, দ্বিতীয়টি 2 ঘন্টা পরে, তৃতীয়টি 4 ঘন্টা পরে এবং 12 ঘন্টা পর্যন্ত সর্বোচ্চ ব্যবধানে। এর মানে হল ডিভাইস যত বেশি সময় Doze-এ থাকবে, অ্যাপ্লিকেশনগুলি তত কম পটভূমি কাজ করতে পারে — ব্যাটারি যতটা সম্ভব আক্রমণাত্মকভাবে সাশ্রয় করা হয়।
Doze Mode-এ, সমস্ত নেটওয়ার্ক অনুরোধ রক্ষণাবেক্ষণ উইন্ডো খোলা পর্যন্ত স্থগিত থাকে। একমাত্র ব্যতিক্রম হল FCM উচ্চ-অগ্রাধিকার বার্তা (পেলোডে “high_priority” ট্যাগ সহ) এবং AlarmManager থেকে setAndAllowWhileIdle() বা setExactAndAllowWhileIdle() ফ্ল্যাগ সহ সংকেত। Retrofit, OkHttp বা Volley-এর মাধ্যমে নিয়মিত নেটওয়ার্ক কল উইন্ডো খোলা পর্যন্ত সম্পাদিত হবে না।
Doze Mode দুটি ধাপ নিয়ে গঠিত: Light Doze (হালকা ঘুম) এবং Deep Doze (গভীর ঘুম)। প্রতিটি ধাপ নিজস্ব বিধিনিষেধ আরোপ করে এবং ভিন্ন সক্রিয়করণ সীমা রয়েছে। ধাপগুলির মধ্যে পার্থক্য বোঝা একজন ডেভেলপারের জন্য গুরুত্বপূর্ণ যিনি শক্তি সাশ্রয় মোডের প্রতি সহনশীল পটভূমি কাজ ডিজাইন করেন।
Light Doze ডিভাইসের 5–30 মিনিট নিষ্ক্রিয়তার পরে (স্ক্রিন বন্ধ, কোন নড়াচড়া নেই) সক্রিয় হয়। এই ধাপে, নেটওয়ার্ক অনুরোধ এবং সিঙ্ক্রোনাইজেশন স্থগিত হয়, কিন্তু AlarmManager এবং JobScheduler সামান্য বিলম্বের সাথে কাজ করতে থাকে। অ্যাপ্লিকেশনগুলি push বিজ্ঞপ্তি পাওয়ার পর বা চার্জারের সাথে সংযুক্ত হলে Light Doze থেকে বের হতে পারে। Light Doze সম্পূর্ণ স্থিরতা প্রয়োজন হয় না — ডিভাইস চলতে পারে।
Deep Doze 60–90 মিনিট নিষ্ক্রিয়তার পরে স্থির ডিভাইসের সাথে (অ্যাক্সেলেরোমিটার কোন নড়াচড়া শনাক্ত করে না) ঘটে। Deep Doze-এ, সিস্টেম কাজ স্থগিত করতে উল্লেখযোগ্যভাবে আক্রমণাত্মক হয়: রক্ষণাবেক্ষণ উইন্ডো কম ঘন ঘন খোলে (দ্রুতগতিতে বাড়তে থাকা ব্যবধানের সাথে), AlarmManager কেবল setAndAllowWhileIdle() ফ্ল্যাগ দিয়ে কাজ করে এবং WakeLock স্বাভাবিক উপায়ে কাজ করে না। Whitelist-এ না থাকা অ্যাপ্লিকেশনগুলি প্রায় সম্পূর্ণরূপে পটভূমি কার্যকলাপ থেকে বঞ্চিত হয়।
| প্যারামিটার | Light Doze | Deep Doze |
|---|---|---|
| সক্রিয়করণ সময় | 5–30 মিনিট | 60–90 মিনিট |
| গতির প্রয়োজনীয়তা | প্রয়োজন নেই | স্থিরতা |
| উইন্ডো ব্যবধান | 10–60 মিনিট | 1–12 ঘন্টা |
| AlarmManager | বিলম্বের সাথে কাজ করে | শুধু withAllowWhileIdle |
| উইন্ডোতে নেটওয়ার্ক | উপলব্ধ | উপলব্ধ |
Doze Mode বেশ কয়েকটি বিভাগের বিধিনিষেধ আরোপ করে যা একজন ডেভেলপারকে অ্যাপ্লিকেশন ডিজাইন করার সময় বিবেচনা করতে হবে। এই বিধিনিষেধগুলি উপেক্ষা করলে পটভূমি কাজ সম্পাদিত হয় না এবং ব্যবহারকারী অ্যাপ্লিকেশনের ভুল আচরণ দেখেন — অনুপস্থিত আপডেট, অপ্রেরিত বার্তা, অসম্পূর্ণ সিঙ্ক্রোনাইজেশন।
সমস্ত নেটওয়ার্ক অনুরোধ রক্ষণাবেক্ষণ উইন্ডো খোলা পর্যন্ত অবরুদ্ধ থাকে। এটি HTTP কল, WebSocket সংযোগ এবং ফাইল ডাউনলোডের ক্ষেত্রে প্রযোজ্য। ব্যতিক্রম হল FCM উচ্চ-অগ্রাধিকার বার্তা, যা Doze থেকে স্বাধীন Google Play Services-এর একটি পৃথক চ্যানেলের মাধ্যমে যায়। গুরুত্বপূর্ণ ডেটা সিঙ্ক্রোনাইজেশনের জন্য, NetworkType.CONNECTED নীতি সহ WorkManager ব্যবহার করার পরামর্শ দেওয়া হয়।
AlarmManager Deep Doze-এ setAndAllowWhileIdle() এবং setExactAndAllowWhileIdle() পদ্ধতি দিয়ে তৈরি অ্যালার্ম ছাড়া সব স্থগিত করে। তবে, এই পদ্ধতিগুলিরও একটি সীমা রয়েছে — প্রতি অ্যাপ্লিকেশনে প্রতি 9 মিনিটে 1টির বেশি সক্রিয়করণ নয়। Deep Doze-এ setExact() দিয়ে সঠিক অ্যালার্ম নির্দিষ্ট সময়ে সক্রিয়করণের গ্যারান্টি দেয় না।
WakeLock Doze Mode-এ অস্বাভাবিক আচরণ করে: সিস্টেম Whitelist-এর বাইরের অ্যাপ্লিকেশনগুলির জন্য ওয়েক লক ধরে রাখে না। এমনকি যদি কোনো অ্যাপ্লিকেশন সঠিকভাবে PARTIAL_WAKE_LOCK অর্জন করে থাকে, যখন Deep Doze শুরু হয়, সিস্টেম এটি জোর করে ছেড়ে দিতে পারে। Doze-এ কাজ সম্পাদনের গ্যারান্টি দেওয়ার একমাত্র উপায় হল একটি বিজ্ঞপ্তি সহ Foreground Service ব্যবহার করা।
Doze Whitelist হল অ্যাপ্লিকেশনগুলির একটি তালিকা যাদের সিস্টেম ন্যূনতম বিধিনিষেধ সহ শক্তি সাশ্রয় মোডে পটভূমি কার্যকলাপের অনুমতি দেয়। ব্যবহারকারী সেটিংস → ব্যাটারি → ব্যাটারি অপ্টিমাইজেশনের মাধ্যমে ম্যানুয়ালি তালিকায় অ্যাপ্লিকেশন যোগ করতে পারেন। সিস্টেম অ্যাপ্লিকেশন, লঞ্চার এবং Google Play Services ডিফল্টরূপে Whitelist-এ থাকে।
একজন ডেভেলপার Intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS সহ সিস্টেম ডায়ালগের মাধ্যমে Whitelist-এ যোগ করার অনুরোধ করতে পারেন। এর জন্য ম্যানিফেস্টে REQUEST_IGNORE_BATTERY_OPTIMIZATIONS অনুমতি প্রয়োজন। তবে, Google বৈধ কারণ ছাড়া ব্যতিক্রমের অনুরোধ করার পরামর্শ দেয় না — এই ক্ষমতার অপব্যবহারকারী অ্যাপ্লিকেশনগুলি Google Play-এ প্রকাশিত হলে প্রত্যাখ্যাত হওয়ার ঝুঁকি নেয়।
Whitelist ছাড়া, একটি অ্যাপ্লিকেশন ডিভাইসকে Doze থেকে জাগানোর জন্য FCM উচ্চ-অগ্রাধিকার ব্যবহার করতে পারে। এই ধরনের প্রতিটি বার্তা অ্যাপ্লিকেশনকে একটি কাজ সম্পাদনের জন্য একটি সংক্ষিপ্ত উইন্ডো (10–30 সেকেন্ড) দেয়। দীর্ঘ অপারেশনের জন্য, অ্যাপ্লিকেশনটিকে Foreground Service শুরু করতে হবে, যা Doze রক্ষণাবেক্ষণ উইন্ডোর মধ্যে কাজ চালিয়ে যায়। Google নির্দিষ্ট ধরণের অ্যাপ্লিকেশনের জন্য ছাড় প্রক্রিয়াও সরবরাহ করে: নেভিগেশন, চিকিৎসা, মেসেজিং।
একটি অ্যাপ্লিকেশন ব্যাটারি অপ্টিমাইজেশন Whitelist-এ আছে কিনা তা পরীক্ষা করতে, powerManager.isIgnoringBatteryOptimizations() পদ্ধতি ব্যবহার করুন। যদি পদ্ধতি false ফেরত দেয়, অ্যাপ্লিকেশনটি সমস্ত Doze বিধিনিষেধের অধীন। যদি true ফেরত দেয়, অ্যাপ্লিকেশনটি Deep Doze-এও বিধিনিষেধ ছাড়া Wakelock, AlarmManager এবং নেটওয়ার্ক ব্যবহার করতে পারে। তবে, এই সুযোগ-সুবিধার অপব্যবহার করলে ব্যবহারকারীদের কাছ থেকে খারাপ রিভিউ আসবে।
Doze Mode-এ অ্যাপ্লিকেশন আচরণের পরীক্ষা একটি বাধ্যতামূলক উন্নয়ন পদক্ষেপ, কারণ Doze পটভূমি ফাংশন ব্যাহত করতে পারে। Android ডিভাইসকে Light Doze এবং Deep Doze-এ জোর করে স্থানান্তরিত করার জন্য ADB-এর মাধ্যমে কমান্ড-লাইন সরঞ্জাম সরবরাহ করে। পরীক্ষা Android 6.0+ সহ একটি শারীরিক ডিভাইস বা এমুলেটরে করা উচিত।
Light Doze-এ প্রবেশ করতে, কমান্ড adb shell dumpsys deviceidle step light ব্যবহার করুন। Deep Doze-এর জন্য — adb shell dumpsys deviceidle step deep। কমান্ড adb shell dumpsys deviceidle force-idle deep মানক টাইমআউটের জন্য অপেক্ষা না করে অবিলম্বে ডিভাইসকে Deep Doze-এ স্থানান্তরিত করে। পরীক্ষার পরে, কমান্ড adb shell dumpsys deviceidle unforce দিয়ে Doze থেকে বের হন।
# Light Doze-এ জোর করে প্রবেশ
$ adb shell dumpsys deviceidle step light
# Deep Doze-এ জোর করে প্রবেশ
$ adb shell dumpsys deviceidle step deep
# তাৎক্ষণিকভাবে Deep Doze-এ স্থানান্তর
$ adb shell dumpsys deviceidle force-idle deep
# Doze থেকে বের হন
$ adb shell dumpsys deviceidle unforce
# Doze অবস্থা দেখুন
$ adb shell dumpsys deviceidle
Doze Mode-এ স্থানান্তরিত হওয়ার পরে, পরীক্ষা করুন: নেটওয়ার্ক অনুরোধ কাজ করে কিনা (সেগুলি স্থগিত হওয়া উচিত), AlarmManager সক্রিয় হয় কিনা, FCM বার্তা বিতরণ করা হয় কিনা, WorkManager কাজ সঠিকভাবে সম্পাদিত হয় কিনা। WorkManager Doze-এ কাজ চালিয়ে যায়: এর কাজ রক্ষণাবেক্ষণ উইন্ডোতে সম্পাদিত হয়। তবে, যদি কোনো কাজের তাৎক্ষণিক সম্পাদনের প্রয়োজন হয়, setExpedited() নির্দিষ্ট করুন বা Foreground Service ব্যবহার করুন।
Doze Mode-এর প্রতি সহনশীল একটি অ্যাপ্লিকেশন বিকাশের জন্য পটভূমি কাজের পদ্ধতি পুনর্বিবেচনা প্রয়োজন। Google সুপারিশ করে যে অ্যাপ্লিকেশনটি এমনভাবে ডিজাইন করুন যাতে এটি Doze-এর যেকোনো বিধিনিষেধের অধীনে সঠিকভাবে কাজ করে, পটভূমি অপারেশনগুলির তাৎক্ষণিক সম্পাদনের উপর নির্ভর না করে। মৌলিক নীতি হল সমস্ত পটভূমি কাজের জন্য WorkManager ব্যবহার করা যা স্থগিত করা যেতে পারে।
WorkManager পটভূমি কাজের জন্য Google-এর প্রস্তাবিত API কারণ এটি স্বয়ংক্রিয়ভাবে Doze-এর সাথে খাপ খাইয়ে নেয়। WorkManager পুরনো সংস্করণে JobScheduler (API 23+) বা AlarmManager + BroadcastReceiver ব্যবহার করে। WorkManager কাজ নিকটতম Doze রক্ষণাবেক্ষণ উইন্ডোতে সম্পাদিত হয়, বা প্রয়োজন হলে Expedited Work (হুডের নিচে Foreground Service) এর মাধ্যমে তাৎক্ষণিকভাবে।
যদি কোনো কাজ স্থগিত করা না যায় (মিডিয়া প্লেব্যাক, নেভিগেশন, VoIP), তাহলে বাধ্যতামূলক বিজ্ঞপ্তি সহ Foreground Service ব্যবহার করুন। Foreground Service Doze থেকে ছাড় পায়: এটি WakeLock ধরে রাখতে পারে এবং নেটওয়ার্ক অনুরোধ সম্পাদন করতে পারে। তবে, Foreground Service-ও কিছু ধরণের কাজের জন্য Deep Doze রক্ষণাবেক্ষণ উইন্ডো নীতির অধীন — উদাহরণস্বরূপ, dataSync।
তাৎক্ষণিক মনোযোগ প্রয়োজন এমন বার্তা (ইনকামিং কল, জরুরি বিজ্ঞপ্তি) বিতরণের জন্য, FCM উচ্চ-অগ্রাধিকার বার্তা ব্যবহার করুন। এই ধরনের বার্তা ডিভাইসকে Doze থেকে জাগায় এবং অ্যাপ্লিকেশনকে প্রক্রিয়াকরণের জন্য একটি সংক্ষিপ্ত উইন্ডো দেয়। নিয়মিত বিজ্ঞপ্তির জন্য উচ্চ-অগ্রাধিকার ব্যবহার করবেন না — এর ফলে ব্যাটারি দ্রুত শেষ হবে এবং Google Play দ্বারা নীতি লঙ্ঘন হিসাবে বিবেচিত হতে পারে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Doze Mode হল Android 6+ এর একটি শক্তি সাশ্রয় মোড যা ডিভাইস ব্যবহার না থাকাকালীন (স্ক্রিন বন্ধ, কোন নড়াচড়া নেই) অ্যাপ্লিকেশনগুলির পটভূমি কার্যকলাপ সীমাবদ্ধ করে। সিস্টেম নেটওয়ার্ক অনুরোধ, সিঙ্ক্রোনাইজেশন এবং JobScheduler স্থগিত করে, ব্যাটারি বাঁচাতে সেগুলিকে রক্ষণাবেক্ষণ উইন্ডোতে গ্রুপ করে।
Doze Mode-এর দুটি ধাপ রয়েছে: Light Doze (হালকা ঘুম) 5–30 মিনিট পরে সক্রিয় হয় এবং AlarmManager-কে বিলম্বের সাথে কাজ করতে দেয়। Deep Doze (গভীর ঘুম) 60–90 মিনিট স্থিরতার পরে ঘটে, যা 12 ঘন্টা পর্যন্ত রক্ষণাবেক্ষণ উইন্ডো সহ পটভূমি কাজগুলিকে আক্রমণাত্মকভাবে সীমাবদ্ধ করে।
Doze নেটওয়ার্ক অনুরোধ ব্লক করে, AlarmManager স্থগিত করে (setAndAllowWhileIdle ছাড়া), WakeLock জোর করে ছেড়ে দেয় এবং JobScheduler কে রক্ষণাবেক্ষণ উইন্ডোতে গ্রুপ করে। ব্যতিক্রমগুলির মধ্যে রয়েছে Foreground Service, FCM উচ্চ-অগ্রাধিকার এবং ব্যবহারকারীর Whitelist-এর অ্যাপ্লিকেশন।
ম্যানিফেস্টে REQUEST_IGNORE_BATTERY_OPTIMIZATIONS অনুমতি অনুরোধ করুন এবং ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS কর্ম সহ একটি Intent পাঠান। সিস্টেম ব্যবহারকারীকে একটি ডায়ালগ দেখাবে। Whitelist-এ যোগ করা একটি বিশেষাধিকার যা Google শুধুমাত্র গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করার পরামর্শ দেয়।
ADB কমান্ড ব্যবহার করুন: Deep Doze-এ প্রবেশের জন্য adb shell dumpsys deviceidle force-idle deep, Light Doze-এর জন্য adb shell dumpsys deviceidle step light, বের হওয়ার জন্য adb shell dumpsys deviceidle unforce। প্রতিটি মোডে WorkManager, AlarmManager এবং FCM পরীক্ষা করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন