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

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

এমন পরিস্থিতিতে যেখানে একটি ওয়েক লক অন্যান্য API দ্বারা অধিগ্রহণ করা হয়, আপনার ম্যানুয়াল ওয়েক লক অধিগ্রহণ এড়ানো উচিত।

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

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

অ্যালার্ম ম্যানেজার

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 ব্যবহার করেন, তখন আপনার আর প্রয়োজন না হলে মিডিয়া সেশন শেষ করুন।

ব্লুটুথ

প্ল্যাটফর্ম ব্লুটুথ এপিআইগুলি ব্লুটুথ অ্যাকশনগুলি ঘটানোর সময় অ্যাপ্লিকেশানের জন্য দায়ী কোনও ওয়েক লক রাখে না। ব্যাকগ্রাউন্ডে ব্লুটুথ পরিবহণ ঘটছে তা যাচাই করতে, WorkManager ব্যবহার করে একটি টাস্ক শিডিউল করুন।

সুপারিশ

  • ব্লুটুথ পেয়ারিং এর সময় ম্যানুয়াল ওয়েক লক অর্জন এড়াতে ব্লুটুথ ডিভাইসগুলিকে পেয়ার করতে কম্প্যানিয়ন ডিভাইস পেয়ারিং ব্যবহার করুন৷
  • ব্যাকগ্রাউন্ড ব্লুটুথ কমিউনিকেশন কিভাবে করতে হয় তা বুঝতে ব্যাকগ্রাউন্ড গাইডেন্সে যোগাযোগের সাথে পরামর্শ করুন।
  • যদি একটি ম্যানুয়াল ওয়েক লক প্রয়োজন বলে মনে করা হয়, তবে শুধুমাত্র ব্লুটুথ অ্যাকশনের সময়কালের জন্য ওয়েক লকটি ধরে রাখুন।

ডিভাইস সেন্সর

ডিভাইস সেন্সর ডেটা ট্র্যাক করার বিভিন্ন পদ্ধতি রয়েছে যেমন ধাপ গণনা, অ্যাক্সিলোমিটার বা জাইরোস্কোপ ডেটা।

Wear OS-এ, উচ্চতা, হৃদস্পন্দন এবং দূরত্ব ভ্রমণের মতো ডিভাইসের ডেটা সংগ্রহ করতে Wear Health পরিষেবা ব্যবহার করুন।

যদি অন্যান্য অ্যাপ্লিকেশন দ্বারা ডেটা সংগ্রহ করা হয়, আপনি ডেটা পুনরুদ্ধার করতে WorkManager-এর সাথে মিলিত Health Connect ব্যবহার করতে পারেন।

পদক্ষেপ বা দূরত্বের ট্র্যাকিং ডেল্টার মতো পরিস্থিতিতে, আপনি ডেটা পুনরুদ্ধার করতে WorkManager-এর সাথে মিলিত মোবাইলে রেকর্ডিং API ব্যবহার করতে পারেন।

নির্দিষ্ট পরিস্থিতিতে, SensorManager ব্যবহার করে কাস্টম ডিভাইস সেন্সর ট্র্যাকিং প্রয়োজন হতে পারে। SensorManager অ্যাপের পক্ষ থেকে ওয়েক লকগুলি অর্জন করে না, যদি না সেন্সরটি একটি ওয়েক আপ সেন্সর হয়, যা isWakeUpSensor API ব্যবহার করে সনাক্ত করা যেতে পারে।

সুপারিশ

উচ্চ নমুনা হারে রেকর্ড করার জন্য সেন্সর ব্যবহার করা ব্যাটারি উল্লেখযোগ্যভাবে নিষ্কাশন করতে পারে, এখানে ব্যাটারি নিষ্কাশন এবং ওয়েক লক ব্যবহার কমানোর সুপারিশ রয়েছে:

  • যদি ট্র্যাকিং ধাপের সংখ্যা বা দূরত্ব ভ্রমণ করা হয়, ব্যাটারি-দক্ষ পদ্ধতিতে ডেটা রেকর্ড করতে রেকর্ডিং API ব্যবহার করুন।
  • Wear OS-এ প্যাসিভ সেন্সর ট্র্যাকিংয়ের জন্য, ব্যাটারি ব্যবহার অপ্টিমাইজ করতে Wear Health Services ব্যবহার করুন।
  • আপনার সেন্সর ফ্রিকোয়েন্সি কমিয়ে 200hz এর কম করুন।
  • SensorManager সাথে একটি সেন্সর নিবন্ধন করার সময়, সেন্সর ব্যাচিং লজিক ব্যবহার করার জন্য 30 সেকেন্ডের বেশি সময়ের একটি maxReportLatencyUs সংজ্ঞায়িত করুন এবং অ্যাপ্লিকেশনটি প্রাপ্ত বাধার সংখ্যা হ্রাস করুন৷
  • সেন্সর ট্র্যাকিংয়ের সম্পূর্ণ সময়কালের জন্য একটি দীর্ঘ ওয়েক লক রাখা এড়িয়ে চলুন, পরিবর্তে প্রতি 30+ সেকেন্ডে সেন্সর ডেটার জন্য পোল করার জন্য AlarmManager ব্যবহার করে অ্যালার্ম নির্ধারণ করুন।

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

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

ওয়েক লক নাম

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*

সুপারিশ

  • অবস্থান ব্যবহার অপ্টিমাইজ করুন . উদাহরণস্বরূপ, টাইমআউট সেট করুন, ব্যাচ অবস্থানের অনুরোধ করুন বা প্যাসিভ অবস্থান আপডেট ব্যবহার করুন।
  • আপনি যদি লোকেশন এপিআই ব্যবহার করেন, তাহলে আপনাকে সরাসরি ওয়েক লকগুলি অর্জন করতে হবে না; আপনার জন্য প্রয়োজনীয় ওয়েক লকগুলি অর্জন করতে আপনি API-এর উপর নির্ভর করতে পারেন।

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

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

ওয়েক লক নাম

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

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

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

সুপারিশ

_অজানা

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

সুপারিশ

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