ব্যাটারি নিষ্কাশন এড়াতে, একটি অ্যান্ড্রয়েড ডিভাইস যেটি নিষ্ক্রিয় থাকে তা দ্রুত ঘুমিয়ে পড়ে। যাইহোক, এমন কিছু সময় আছে যখন একটি অ্যাপ্লিকেশনের স্ক্রীন বা CPU কে জাগিয়ে তুলতে হবে এবং কিছু কাজ সম্পূর্ণ করার জন্য এটিকে জাগ্রত রাখতে হবে।
আপনি যে পদ্ধতিটি গ্রহণ করেন তা আপনার অ্যাপের প্রয়োজনের উপর নির্ভর করে। যাইহোক, একটি সাধারণ নিয়ম হল যে আপনার অ্যাপের জন্য সবচেয়ে হালকা পদ্ধতি ব্যবহার করা উচিত, যাতে সিস্টেম রিসোর্সে আপনার অ্যাপের প্রভাব কম হয়। নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে ডিভাইসের ডিফল্ট ঘুমের আচরণ আপনার অ্যাপের প্রয়োজনীয়তার সাথে সামঞ্জস্যপূর্ণ নয় সেগুলি কীভাবে পরিচালনা করবেন।
ওয়েক লক ব্যবহার করার বিকল্প
আপনার অ্যাপে ওয়েকলক সমর্থন যোগ করার আগে, আপনার অ্যাপের ব্যবহারের ক্ষেত্রে নিম্নলিখিত বিকল্প সমাধানগুলির একটিকে সমর্থন করে কিনা তা বিবেচনা করুন:
যদি আপনার অ্যাপটি দীর্ঘদিন ধরে চলমান HTTP ডাউনলোডগুলি সম্পাদন করে, তাহলে
DownloadManager
ব্যবহার করার কথা বিবেচনা করুন।যদি আপনার অ্যাপটি একটি বাহ্যিক সার্ভার থেকে ডেটা সিঙ্ক্রোনাইজ করে, একটি সিঙ্ক অ্যাডাপ্টার তৈরি করার কথা বিবেচনা করুন৷
যদি আপনার অ্যাপ ব্যাকগ্রাউন্ড পরিষেবার উপর নির্ভর করে, তাহলে নির্দিষ্ট বিরতিতে এই পরিষেবাগুলিকে ট্রিগার করতে JobScheduler বা Firebase ক্লাউড মেসেজিং ব্যবহার করার কথা বিবেচনা করুন।
যখনই একটি কম্প্যানিয়ন ডিভাইস রেঞ্জের মধ্যে থাকে তখন আপনার কম্প্যানিয়ন অ্যাপ চালু রাখতে হলে, কম্প্যানিয়ন ডিভাইস ম্যানেজার ব্যবহার করুন।
পর্দা চালু রাখুন
নির্দিষ্ট কিছু অ্যাপের স্ক্রিন চালু রাখতে হবে, যেমন গেম বা সিনেমা অ্যাপ। এটি করার সর্বোত্তম উপায় হল আপনার কার্যকলাপে FLAG_KEEP_SCREEN_ON
ব্যবহার করা (এবং শুধুমাত্র একটি ক্রিয়াকলাপে, কোনো পরিষেবা বা অন্য অ্যাপের উপাদানে নয়)। যেমন:
কোটলিন
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
জাভা
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } }
এই পদ্ধতির সুবিধা হল যে ওয়েক লকগুলির বিপরীতে ( CPU চালু রাখুন ) এর জন্য বিশেষ অনুমতির প্রয়োজন হয় না এবং প্ল্যাটফর্মটি সঠিকভাবে ব্যবহারকারীকে অ্যাপ্লিকেশনগুলির মধ্যে চলাফেরা করে, আপনার অ্যাপকে অব্যবহৃত সংস্থানগুলি প্রকাশ করার বিষয়ে চিন্তা করার দরকার নেই৷
এটি বাস্তবায়নের আরেকটি উপায় হল আপনার অ্যাপ্লিকেশনের লেআউট XML ফাইলে, android:keepScreenOn
বৈশিষ্ট্যটি ব্যবহার করে:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
android:keepScreenOn="true"
ব্যবহার করা FLAG_KEEP_SCREEN_ON
ব্যবহার করার সমতুল্য৷ আপনি আপনার অ্যাপের জন্য সর্বোত্তম যে কোনও পদ্ধতি ব্যবহার করতে পারেন। আপনার ক্রিয়াকলাপে প্রোগ্রাম্যাটিকভাবে পতাকা সেট করার সুবিধা হল এটি আপনাকে প্রোগ্রাম্যাটিকভাবে পতাকাটি পরে সাফ করার বিকল্প দেয় এবং এর ফলে স্ক্রিনটি বন্ধ করার অনুমতি দেয়।
টিভির জন্য অ্যাম্বিয়েন্ট মোড
টিভিতে, সক্রিয় ভিডিও প্লেব্যাকের সময় ডিভাইসটিকে অ্যাম্বিয়েন্ট মোডে যাওয়া থেকে আটকাতে FLAG_KEEP_SCREEN_ON
ব্যবহার করা উচিত৷ যখন FLAG_KEEP_SCREEN_ON
ফোরগ্রাউন্ড অ্যাক্টিভিটি দ্বারা সেট করা না থাকে, তখন ডিভাইসটি স্বয়ংক্রিয়ভাবে নিষ্ক্রিয়তার পর অ্যাম্বিয়েন্ট মোডে প্রবেশ করবে।
CPU চালু রাখুন
ডিভাইসটি ঘুমাতে যাওয়ার আগে কিছু কাজ শেষ করার জন্য আপনার যদি CPU চালু রাখতে হয়, আপনি ওয়েক লক নামে একটি PowerManager
সিস্টেম পরিষেবা বৈশিষ্ট্য ব্যবহার করতে পারেন। ওয়েক লক আপনার অ্যাপ্লিকেশনকে হোস্ট ডিভাইসের পাওয়ার স্থিতি নিয়ন্ত্রণ করতে দেয়।
ওয়েক লক তৈরি করা এবং ধরে রাখা হোস্ট ডিভাইসের ব্যাটারি লাইফের উপর নাটকীয় প্রভাব ফেলতে পারে। এইভাবে আপনার ওয়েক লক ব্যবহার করা উচিত যখন কঠোরভাবে প্রয়োজন হয় এবং যতটা সম্ভব অল্প সময়ের জন্য ধরে রাখুন। উদাহরণস্বরূপ, আপনার কখনই কোনও ক্রিয়াকলাপে ওয়েক লক ব্যবহার করার প্রয়োজন হবে না। উপরে বর্ণিত হিসাবে, আপনি যদি আপনার কার্যকলাপে স্ক্রীন চালু রাখতে চান, তাহলে FLAG_KEEP_SCREEN_ON
ব্যবহার করুন।
একটি ওয়েক লক ব্যবহার করার জন্য একটি বৈধ ক্ষেত্রে একটি ব্যাকগ্রাউন্ড পরিষেবা হতে পারে যা স্ক্রীন বন্ধ থাকা অবস্থায় কাজ করার জন্য CPU-কে চালু রাখতে একটি ওয়েক লক নিতে হবে। আবার, যদিও, ব্যাটারি লাইফের উপর এর প্রভাবের কারণে এই অনুশীলনটি হ্রাস করা উচিত।
একটি ওয়েক লক ব্যবহার করার জন্য, প্রথম ধাপ হল আপনার অ্যাপ্লিকেশনের ম্যানিফেস্ট ফাইলে WAKE_LOCK
অনুমতি যোগ করা:
<uses-permission android:name="android.permission.WAKE_LOCK" />
যদি আপনার অ্যাপে একটি ব্রডকাস্ট রিসিভার থাকে যা কিছু কাজ করার জন্য একটি পরিষেবা ব্যবহার করে, তাহলে আপনি কীভাবে সরাসরি ওয়েক লক সেট করবেন তা এখানে:
কোটলিন
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply { acquire() } }
জাভা
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag"); wakeLock.acquire();
ওয়েক লক রিলিজ করতে, wakelock.release()
এ কল করুন। এটি CPU-তে আপনার দাবি প্রকাশ করে। ব্যাটারি নষ্ট হওয়া এড়াতে আপনার অ্যাপটি ব্যবহার করা শেষ হওয়ার সাথে সাথে একটি ওয়েক লক রিলিজ করা গুরুত্বপূর্ণ।