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

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

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

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

AlarmManager

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

ওয়েক লক নাম

AlarmManager *alarm* নামে ওয়েক লক তৈরি করে। (তারকাগুলো ওয়েক লক নামের অংশ, তারা ওয়াইল্ড কার্ডের প্রতিনিধিত্ব করে না।)

সুপারিশ

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

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

অডিও এবং মিডিয়া

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

ওয়েক লক নাম

মিডিয়া এপিআইগুলি Audio দিয়ে শুরু হওয়া বিভিন্ন নামে ওয়েক লকগুলি অর্জন করে:

  • AudioBitPerfect : ক্ষতিহীন USB অডিও প্লেব্যাকের জন্য ব্যবহৃত হয়।
  • AudioDirectOut : একটি টিভি বা বিশেষ ডিভাইসে ক্ষতিহীন অডিও প্লেব্যাকের জন্য ব্যবহৃত হয়।
  • AudioDup : ব্লুটুথ বা ইউএসবি এর মাধ্যমে সংযুক্ত থাকাকালীন বিজ্ঞপ্তি প্লেব্যাকের জন্য ব্যবহৃত হয়।
  • AudioIn : মাইক্রোফোন সক্রিয় থাকাকালীন ক্যামকর্ডার মোডে অডিও ক্যাপচারের জন্য ব্যবহৃত হয়।
  • AudioMix : একটি সাধারণ ডিভাইসে অডিও প্লেব্যাকের জন্য ব্যবহৃত হয়।
  • AudioOffload : এই মোড সমর্থন করে এমন অ্যাপ্লিকেশানগুলির জন্য দীর্ঘমেয়াদী সঙ্গীত-কেবল প্লেব্যাকের জন্য ব্যবহৃত হয়৷
  • AudioSpatial : স্থানিক অডিও সমর্থন করে এমন ডিভাইসে মাল্টি-চ্যানেল মুভি বা মিউজিক অডিও প্লেব্যাকের জন্য ব্যবহৃত হয়।
  • AudioUnknown : অন্যান্য পরিস্থিতিতে প্রযোজ্য না হলে ব্যবহৃত হয়।
  • MmapCapture : কম লেটেন্সি অডিও ক্যাপচারের জন্য ব্যবহৃত হয়।
  • MmapPlayback : কম লেটেন্সি প্লেব্যাকের জন্য ব্যবহৃত হয়, যেমন গেমিং বা পেশাদার অডিও অ্যাপ্লিকেশনের জন্য।

সুপারিশ

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

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

ফায়ারবেস ক্লাউড মেসেজ (FCM)

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

ওয়েক লক নাম

GCM GOOGLE_C2DM নামের একটি ওয়েক লক অর্জন করে।

সুপারিশ

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

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

কাজের সময়সূচি

JobScheduler কাজগুলি পটভূমিতে কাজগুলি সম্পাদন করার সময় ওয়েক লকগুলি অর্জন করে৷ ওয়েক লকগুলি কর্মীরা তৈরি করা অ্যাপটিকে দায়ী করা হয়েছে।

ওয়েক লক নাম

JobScheduler দ্বারা অর্জিত ওয়েক লক নামগুলি তারা Android সিস্টেমের কোন সংস্করণে চলছে এবং কাজের উদ্দেশ্যের উপর নির্ভর করে৷

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

অ্যান্ড্রয়েড 15 এবং তার নিচের

ব্যবহারকারীর সূচনাকৃত কাজগুলি এই প্যাটার্ন অনুসরণ করে নাম সহ ওয়েক লক তৈরি করে:

*job*u/@<name_space>@/<package_name>/<classname>

অন্যান্য কাজ এই প্যাটার্ন ব্যবহার করে:

*job*/@<name_space>@/<package_name>/<classname>
Android 16 এবং উচ্চতর

ব্যবহারকারীর সূচনা করা কাজগুলি এই প্যাটার্ন অনুসরণ করে নাম সহ ওয়েক লক তৈরি করে:

*job*u/@<name_space>@/#<trace_tag>#/<package_name>/<classname>

দ্রুত কাজ এই প্যাটার্ন ব্যবহার করে:

*job*e/@<name_space>@/#<trace_tag>#/<package_name>/<classname>

নিয়মিত কাজ এই প্যাটার্ন ব্যবহার করে:

*job*r/@<name_space>@/#<trace_tag>#/<package_name>/<classname>
উদাহরণ

ধরুন নেমস্পেস backup সহ একটি দ্রুত কাজ আছে এবং ট্রেস ট্যাগ started । প্যাকেজের নাম com.example.app , এবং যে ক্লাসটি কাজটি তৈরি করেছে সেটি হল com.backup.BackupFileService

অ্যান্ড্রয়েড 15 বা তার কম সংস্করণে চলমান ডিভাইসগুলিতে, ওয়েক লকটির নাম দেওয়া হবে:

*job*/@backup@/com.example.app/com.backup.BackupFileService

Android 16 বা উচ্চতর চলমান ডিভাইসগুলিতে, ওয়েক লকটির নাম দেওয়া হবে:

*job*e/@backup@/#started#/com.example.app/com.backup.BackupFileService

সুপারিশ

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

অবস্থান

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

ওয়েক লক নাম

অবস্থান পরিষেবাগুলি নিম্নলিখিত নামগুলি ব্যবহার করে:

  • CollectionLib-SigCollector
  • NetworkLocationLocator
  • NetworkLocationScanner
  • NlpCollectorWakeLock
  • NlpWakeLock
  • *location*

সুপারিশ

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

ওয়ার্ক ম্যানেজার

ওয়ার্ক ম্যানেজার কর্মীরা পটভূমিতে কাজগুলি সম্পাদন করার সময় ওয়েক লকগুলি অর্জন করে। ওয়েক লকগুলি কর্মীরা তৈরি করা অ্যাপটিকে দায়ী করা হয়েছে।

ওয়েক লক নাম

WorkManager দ্বারা অধিগ্রহণ করা ওয়েক লক নামগুলি Android সিস্টেমের কোন সংস্করণে চলছে তার উপর নির্ভর করে৷

অ্যান্ড্রয়েড 15 এবং তার নিচের

WorkManager কাজগুলি এই প্যাটার্ন অনুসরণ করে নাম সহ ওয়েক লক তৈরি করে:

*job*/<package_name>/androidx.work.impl.background.systemjob.SystemJobService
Android 16 এবং উচ্চতর

দ্রুত কাজগুলি এই প্যাটার্ন অনুসরণ করে নাম সহ ওয়েক লক তৈরি করে:

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

নিয়মিত কাজগুলি এই প্যাটার্ন অনুসরণ করে:

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

ডিফল্টরূপে, <trace_tag> হল কর্মীর নাম।

উদাহরণ

ধরুন BackupFileWorker নামে একজন দ্রুত কর্মী আছেন। প্যাকেজের নাম com.example.app

অ্যান্ড্রয়েড 15 বা তার কম সংস্করণে চলমান ডিভাইসগুলিতে, ওয়েক লকটির নাম দেওয়া হবে:

*job*/com.example.app/androidx.work.impl.background.systemjob.SystemJobService

Android 16 বা উচ্চতর চলমান ডিভাইসগুলিতে, ওয়েক লকটির নাম দেওয়া হবে:

*job*e/#BackupFileWorker#/com.example.app/androidx.work.impl.background.systemjob.SystemJobService

সুপারিশ

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

_অজানা

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

সুপারিশ

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