Wakeups হল AlarmManager API-এর একটি প্রক্রিয়া যা ডেভেলপারদের একটি নির্দিষ্ট সময়ে একটি ডিভাইস জাগানোর জন্য একটি অ্যালার্ম সেট করতে দেয়। আপনার অ্যাপটি RTC_WAKEUP বা ELAPSED_REALTIME_WAKEUP পতাকা সহ AlarmManager এর set() পদ্ধতিগুলির একটিতে কল করে একটি ওয়েকআপ অ্যালার্ম সেট করে৷ যখন একটি ওয়েকআপ অ্যালার্ম ট্রিগার করা হয়, তখন ডিভাইসটি লো-পাওয়ার মোড থেকে বেরিয়ে আসে এবং অ্যালার্মের onReceive() বা onAlarm() পদ্ধতিটি চালানোর সময় একটি আংশিক ওয়েক লক ধারণ করে। যদি ওয়েকআপ অ্যালার্মগুলি অত্যধিকভাবে ট্রিগার করা হয় তবে সেগুলি একটি ডিভাইসের ব্যাটারি নিষ্কাশন করতে পারে।
অ্যাপ্লিকেশানের গুণমান উন্নত করতে আপনাকে সাহায্য করার জন্য, Android স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশানগুলিকে অতিরিক্ত ওয়েকআপ অ্যালার্মের জন্য নিরীক্ষণ করে এবং Android ভাইটালগুলিতে তথ্য প্রদর্শন করে৷ কীভাবে ডেটা সংগ্রহ করা হয় সে সম্পর্কে তথ্যের জন্য, Play Console ডক্স দেখুন।
যদি আপনার অ্যাপটি ডিভাইসটিকে অত্যধিকভাবে জাগিয়ে তোলে, তাহলে আপনি সমস্যাটি নির্ণয় এবং সমাধান করতে এই পৃষ্ঠার নির্দেশিকা ব্যবহার করতে পারেন।
সমস্যা ঠিক করুন
AlarmManager অ্যান্ড্রয়েড প্ল্যাটফর্মের প্রাথমিক সংস্করণে চালু করা হয়েছিল, কিন্তু সময়ের সাথে সাথে, অনেক ক্ষেত্রে ব্যবহার করা হয়েছে যেগুলি পূর্বে AlarmManager প্রয়োজন ছিল এখন WorkManager- এর মতো নতুন বৈশিষ্ট্যগুলি দ্বারা আরও ভালভাবে পরিবেশন করা হয়েছে। এই বিভাগে জেগে ওঠার অ্যালার্ম কমানোর জন্য টিপস রয়েছে, তবে দীর্ঘমেয়াদে, সেরা অনুশীলন বিভাগে সুপারিশগুলি অনুসরণ করতে আপনার অ্যাপ স্থানান্তর করার কথা বিবেচনা করুন।
আপনার অ্যাপের সেই জায়গাগুলি চিহ্নিত করুন যেখানে আপনি ওয়েকআপ অ্যালার্মের সময়সূচী করেন এবং সেই অ্যালার্মগুলি ট্রিগার হওয়ার ফ্রিকোয়েন্সি হ্রাস করুন৷ এখানে কিছু টিপস আছে:
AlarmManagerএRTC_WAKEUPবাELAPSED_REALTIME_WAKEUPপতাকা অন্তর্ভুক্ত বিভিন্নset()পদ্ধতিতে কলগুলি সন্ধান করুন৷আমরা আপনার অ্যালার্মের ট্যাগ নামের সাথে আপনার প্যাকেজ, ক্লাস বা পদ্ধতির নাম অন্তর্ভুক্ত করার পরামর্শ দিই যাতে আপনি সহজেই আপনার উত্সের অবস্থান সনাক্ত করতে পারেন যেখানে অ্যালার্ম সেট করা হয়েছিল৷ এখানে কিছু অতিরিক্ত টিপস আছে:
- নামে কোনো ব্যক্তিগতভাবে শনাক্তকরণ তথ্য (PII) ছেড়ে দিন, যেমন একটি ইমেল ঠিকানা। অন্যথায়, ডিভাইসটি অ্যালার্ম নামের পরিবর্তে
_UNKNOWNলগ করবে৷ - ক্লাস বা পদ্ধতির নাম প্রোগ্রাম্যাটিকভাবে পাবেন না, উদাহরণস্বরূপ
getName()কল করে, কারণ এটি Proguard দ্বারা অস্পষ্ট হতে পারে। পরিবর্তে একটি হার্ড কোডেড স্ট্রিং ব্যবহার করুন. - অ্যালার্ম ট্যাগে একটি কাউন্টার বা অনন্য শনাক্তকারী যোগ করবেন না। সিস্টেমটি সেইভাবে সেট করা অ্যালার্মগুলিকে একত্রিত করতে সক্ষম হবে না কারণ তাদের সকলেরই অনন্য শনাক্তকারী রয়েছে৷
- নামে কোনো ব্যক্তিগতভাবে শনাক্তকরণ তথ্য (PII) ছেড়ে দিন, যেমন একটি ইমেল ঠিকানা। অন্যথায়, ডিভাইসটি অ্যালার্ম নামের পরিবর্তে
সমস্যাটি সমাধান করার পরে, নিম্নলিখিত ADB কমান্ডটি চালিয়ে আপনার ওয়েকআপ অ্যালার্মগুলি প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা যাচাই করুন:
adb shell dumpsys alarm
এই কমান্ডটি ডিভাইসে অ্যালার্ম সিস্টেম পরিষেবার অবস্থা সম্পর্কে তথ্য প্রদান করে। আরও তথ্যের জন্য, ডাম্পসি দেখুন।
সর্বোত্তম অনুশীলন
ওয়েকআপ অ্যালার্ম ব্যবহার করুন শুধুমাত্র তখনই যদি আপনার অ্যাপকে ব্যবহারকারীর মুখোমুখি অপারেশন করতে হয় (যেমন একটি বিজ্ঞপ্তি পোস্ট করা বা ব্যবহারকারীকে সতর্ক করা)। AlarmManager সেরা অনুশীলনের একটি তালিকার জন্য, অ্যালার্ম নির্ধারণ করুন দেখুন।
ব্যাকগ্রাউন্ড টাস্ক, বিশেষ করে রিপিটিং বা নেটওয়ার্ক ব্যাকগ্রাউন্ড টাস্ক শিডিউল করতে AlarmManager ব্যবহার করবেন না। পটভূমির কাজগুলি নির্ধারণ করতে WorkManager ব্যবহার করুন কারণ এটি নিম্নলিখিত সুবিধাগুলি অফার করে:
- ব্যাচিং - কাজগুলি একত্রিত করা হয় যাতে ব্যাটারি খরচ কম হয়
- অধ্যবসায় - ডিভাইসটি রিবুট করা হলে, নির্ধারিত ওয়ার্কম্যানেজার কাজগুলি রিবুট শেষ হওয়ার পরে চলে
- মানদণ্ড - কাজগুলি শর্তগুলির উপর ভিত্তি করে চলতে পারে, যেমন ডিভাইসটি চার্জ হচ্ছে কিনা বা ওয়াইফাই উপলব্ধ কিনা
আরও তথ্যের জন্য, পটভূমি প্রক্রিয়াকরণের নির্দেশিকা দেখুন।
AlarmManager ব্যবহার করবেন না টাইমিং ক্রিয়াকলাপগুলি নির্ধারণ করতে যেগুলি কেবলমাত্র অ্যাপটি চলাকালীন বৈধ (অন্য কথায়, ব্যবহারকারী যখন অ্যাপ থেকে প্রস্থান করে তখন টাইমিং অপারেশন বাতিল করা উচিত)। এই পরিস্থিতিতে, Handler ক্লাস ব্যবহার করুন কারণ এটি ব্যবহার করা সহজ এবং অনেক বেশি কার্যকর।
আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
- আংশিক জাগরণ লক আটকে আছে
- ANR