অন্যান্য API দ্বারা তৈরি ওয়েক লকগুলি সনাক্ত করুন৷

বেশ কিছু লাইব্রেরি এবং সিস্টেম এপিআই ওয়েক লকগুলি অর্জন করতে পারে যা আপনার অ্যাপের জন্য দায়ী। এটি আপনার অ্যাপে একটি ওয়েক লক সনাক্ত করা কঠিন করে তুলতে পারে যা একটি সমস্যা সৃষ্টি করতে পারে। আপনি যদি একটি API অপব্যবহার করেন, তবে এর ফলে আপনার অ্যাপটি খুব বেশি সময় ধরে একটি ওয়েক লক ধরে রাখতে পারে, যদিও আপনি সরাসরি ওয়েক লক API-কে কল করছেন না।

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

এই নথিটি নিম্নলিখিত ওয়েক লক নামগুলিকে কভার করে৷ প্রতিটি ক্ষেত্রে, যখন ওয়েক লক অন্য কোনো লাইব্রেরি বা API দ্বারা তৈরি করা হতে পারে, লকটি সেই অ্যাপটিকে দায়ী করা হয় যা সেই API বলে।

*alarm*

এই ওয়েক লকটি AlarmManager দ্বারা অধিগ্রহণ করা হয়েছে এবং কলিং অ্যাপের জন্য দায়ী করা হয়েছে৷ অ্যালার্ম বন্ধ হয়ে গেলে AlarmManager ওয়েক লকটি অর্জন করে এবং অ্যালার্ম সম্প্রচারের onReceive() পদ্ধতিটি কার্যকর করা শেষ হলে লকটি প্রকাশ করে।

সুপারিশ

অ্যালার্ম আচরণ অপ্টিমাইজ করতে আমরা নিম্নলিখিত অনুশীলনগুলি সুপারিশ করি:

  • অ্যালার্ম সময়সূচী ফ্রিকোয়েন্সি অপ্টিমাইজ করতে AlarmManager ব্যবহার করুন।
  • প্রয়োজনে শুধুমাত্র RTC_WAKEUP অ্যালার্ম ব্যবহার করুন (যা ডিভাইসটিকে জাগিয়ে তোলে)।
  • অ্যালার্মের ব্যবহার কম করুন এবং onReceive() পদ্ধতিতে দীর্ঘ কাজ করা এড়িয়ে চলুন।

AudioIn , AudioMix , ইত্যাদি।

বিভিন্ন ওয়েক লক যার নাম Audio দিয়ে শুরু হয় সেগুলি অডিও রেকর্ডিং বা প্লে করার সময় মিডিয়া API দ্বারা অর্জিত হয়। ওয়েক লকগুলি কলিং অ্যাপের জন্য দায়ী করা হয়।

মাইক্রোফোন সক্রিয় থাকাকালীন ক্যামকর্ডার মোডে AudioRecord ক্যাপচারের সময় AudioIn অর্জিত হয়। ডিভাইসে AudioTrack প্লেব্যাকের সময় AudioMix অর্জিত হয়। অন্যান্য মিডিয়া এপিআই Audio থেকে শুরু করে অন্য নাম দিয়ে ওয়েক লকগুলি অর্জন করতে পারে।

সুপারিশ

আমরা নিম্নলিখিত অনুশীলনগুলি সুপারিশ করি:

  • Audio দিয়ে শুরু হওয়া ওয়েক লক নাম ব্যবহার করবেন না।
  • আপনি যদি মিডিয়া API ব্যবহার করেন, তাহলে আপনাকে সরাসরি ওয়েক লকগুলি অর্জন করতে হবে না; আপনার জন্য প্রয়োজনীয় ওয়েক লকগুলি অর্জন করতে আপনি API-এর উপর নির্ভর করতে পারেন।
  • আপনি যখন মিডিয়া API ব্যবহার করেন, তখন আপনার আর প্রয়োজন না হলে মিডিয়া সেশন শেষ করুন।

GOOGLE_C2DM

অ্যাপটিতে একটি Firebase ক্লাউড মেসেজ (FCM) সম্প্রচার করার সময় এই ওয়েক লকটি GCM দ্বারা অর্জিত হয়। FCM সম্প্রচার onMessageReceived() পদ্ধতি কার্যকর করা শেষ হলে ওয়েক লকটি প্রকাশ করা হয়।

সুপারিশ

FCM আচরণ অপ্টিমাইজ করতে আমরা নিম্নলিখিত অনুশীলনগুলি সুপারিশ করি:

  • FCM ডেলিভারির ফ্রিকোয়েন্সি অপ্টিমাইজ করুন।
  • উচ্চ-প্রধান FCM ব্যবহার করবেন না যদি না বার্তাটি আসলে অবিলম্বে বিতরণ করার প্রয়োজন হয়।
  • onMessageReceived() পদ্ধতি যত তাড়াতাড়ি সম্ভব সম্পূর্ণ করুন। আরও তথ্যের জন্য ফায়ারবেস নির্দেশিকা দেখুন।

*job*/<package_name>/<package_and_job_name>

এই ওয়েক লকগুলি ব্যাকগ্রাউন্ডে কাজগুলি সম্পাদন করার সময় JobScheduler কাজ দ্বারা ব্যবহৃত হয়। ওয়েক লকগুলি কর্মীরা তৈরি করা অ্যাপটিকে দায়ী করা হয়েছে।

"<package_name>" হল আপনার অ্যাপের প্যাকেজের নাম, আক্ষরিক পাঠ্য <package name> নয়। একইভাবে, "<package_and_job_name>" হল প্যাকেজের নাম তারপর কাজের নাম। *job* হল অক্ষর ক্রম *job* , তারকাচিহ্ন সহ; তারকাচিহ্নগুলি ওয়াইল্ড কার্ড হিসাবে ব্যবহার করা হচ্ছে না। এখানে এমন একটি ওয়েক লক নামের একটি উদাহরণ রয়েছে:

*job*/com.example.app/com.example.app.example.path.ExampleJobService

সুপারিশ

JobScheduler টাস্কের আপনার ব্যবহার অডিট করুন। বিশেষ করে, টাস্ক শিডিউলিং API-এর জন্য ব্যাটারি ব্যবহার অপ্টিমাইজ করার জন্য আমাদের নির্দেশিকা অনুসরণ করুন।

*job*/<package_name>/androidx.work.impl.background.systemjob.SystemJobService

এই ওয়েক লকগুলি ব্যাকগ্রাউন্ডে কাজগুলি সম্পাদন করার সময় WorkManager কর্মীদের দ্বারা ব্যবহৃত হয়। ওয়েক লকগুলি কর্মীরা তৈরি করা অ্যাপটিকে দায়ী করা হয়েছে।

"<package_name>" হল আপনার অ্যাপের প্যাকেজের নাম, আক্ষরিক পাঠ্য <package name> নয়। *job* হল অক্ষর ক্রম *job* , তারকাচিহ্ন সহ; তারকাচিহ্নগুলি ওয়াইল্ড কার্ড হিসাবে ব্যবহার করা হচ্ছে না।

সুপারিশ

WorkManager কর্মীদের আপনার ব্যবহার অডিট করুন। বিশেষ করে, টাস্ক শিডিউলিং API-এর জন্য ব্যাটারি ব্যবহার অপ্টিমাইজ করার জন্য আমাদের নির্দেশিকা অনুসরণ করুন।

NetworkLocationLocator , FusedLocation , *location*

এই ওয়েক লক নামগুলি LocationManager এবং FusedLocationProviderClient দ্বারা ডিভাইসের অবস্থান অর্জন এবং বিতরণ করার জন্য ব্যবহার করা হয়৷ ওয়েক লকগুলি সেই অ্যাপের জন্য দায়ী করা হয় যা সেই APIগুলিকে বলে।

সুপারিশ

অবস্থান ব্যবহার অপ্টিমাইজ করুন . উদাহরণস্বরূপ, টাইমআউট সেট করুন, ব্যাচ অবস্থানের অনুরোধ করুন বা প্যাসিভ অবস্থান আপডেট ব্যবহার করুন।

_অজানা

যদি ডিবাগিং টুলগুলি মনে করে যে একটি ওয়েক লক নামে ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) রয়েছে, তবে তারা প্রকৃত ওয়েক লক নামটি প্রদর্শন করে না। পরিবর্তে, তারা ওয়েক লকটিকে _UNKNOWN হিসাবে লেবেল করে। উদাহরণস্বরূপ, ওয়েক লক নামের একটি ইমেল ঠিকানা থাকলে টুলগুলি এটি করতে পারে।

সুপারিশ

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