কীভাবে করবেন

ব্যাটারির প্রযুক্তিগত মান প্রয়োগ এখন কার্যকর: সাধারণ ওয়েক লক ব্যবহারের ক্ষেত্রগুলো কীভাবে অপ্টিমাইজ করবেন

৮ মিনিটের পাঠ
Alice Yuan
ডেভেলপার সম্পর্ক প্রকৌশলী

অ্যান্ড্রয়েড ব্যবহারকারীদের জন্য অতিরিক্ত ব্যাটারি খরচ একটি প্রধান উদ্বেগের বিষয়, এটি উপলব্ধি করে গুগল ডেভেলপারদের আরও শক্তি-সাশ্রয়ী অ্যাপ তৈরি করতে সাহায্য করার জন্য গুরুত্বপূর্ণ পদক্ষেপ নিচ্ছে। ১লা মার্চ, ২০২৬ থেকে, গুগল প্লে স্টোর ব্যাটারি খরচ কমানোর জন্য ওয়েক লক টেকনিক্যাল কোয়ালিটি ট্রিটমেন্ট চালু করা শুরু করেছে। এই ট্রিটমেন্টটি আগামী সপ্তাহগুলোতে পর্যায়ক্রমে প্রভাবিত অ্যাপগুলোতে পৌঁছে দেওয়া হবে। যে অ্যাপগুলো অ্যান্ড্রয়েড ভাইটালস-এ ধারাবাহিকভাবে "এক্সেসিভ পার্শিয়াল ওয়েক লক" থ্রেশহোল্ড অতিক্রম করবে, তাদের স্টোরে উপস্থিতির উপর সুস্পষ্ট প্রভাব পড়তে পারে, যার মধ্যে রয়েছে স্টোর লিস্টিং-এ সতর্কবার্তা এবং সুপারিশের মতো ডিসকভারি সারফেস থেকে বাদ পড়া।

appDetails.png

আপনার অ্যাপটি ক্ষতিকর আচরণের সীমা অতিক্রম করলে ব্যবহারকারীরা আপনার স্টোর লিস্টিং-এ একটি সতর্কবার্তা দেখতে পারেন।

এই উদ্যোগটি ক্র্যাশ এবং এএনআর-এর মতো স্থিতিশীলতা মেট্রিকগুলোর পাশাপাশি ব্যাটারির কার্যকারিতাকে একটি মূল গুরুত্বপূর্ণ মেট্রিক হিসেবে উন্নীত করেছে। "খারাপ আচরণের সীমা" বলতে বোঝায়, গত ২৮ দিনে ব্যবহারকারীর সেশনগুলোর ৫% -এর বেশি সময় ধরে স্ক্রিন বন্ধ থাকা অবস্থায় গড়ে কমপক্ষে দুই ঘণ্টা একটি অব্যাহতিপ্রাপ্ত নয় এমন আংশিক ওয়েক লক ধরে রাখা। একটি ওয়েক লককে অব্যাহতি দেওয়া হয় যদি সেটি সিস্টেম দ্বারা ধরে রাখা এমন একটি ওয়েক লক হয় যা ব্যবহারকারীকে সুস্পষ্ট সুবিধা প্রদান করে এবং যা আরও অপ্টিমাইজ করা যায় না, যেমন অডিও প্লেব্যাক, লোকেশন অ্যাক্সেস বা ব্যবহারকারীর দ্বারা শুরু করা ডেটা ট্রান্সফার। আপনি আমাদের অ্যান্ড্রয়েড ভাইটালস ডকুমেন্টেশনে অতিরিক্ত ওয়েক লকের সম্পূর্ণ সংজ্ঞা দেখতে পারেন।

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

ফোরগ্রাউন্ড সার্ভিস ব্যবহার বনাম আংশিক ওয়েক লক

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

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

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

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

তৃতীয় পক্ষের লাইব্রেরিগুলি ওয়েক লক অর্জন করছে

প্রায়শই দেখা যায় যে, কোনো অ্যাপ তার হয়ে কাজ করা কোনো থার্ড-পার্টি SDK বা সিস্টেম API দ্বারা ধারণ করা অতিরিক্ত ওয়েক লকের জন্য ফ্ল্যাগড হয়েছে। এই ওয়েক লকগুলি শনাক্ত ও সমাধান করার জন্য, আমরা নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করার পরামর্শ দিই:

  • অ্যান্ড্রয়েডের গুরুত্বপূর্ণ তথ্য যাচাই করুন: অতিরিক্ত আংশিক ওয়েক লক ড্যাশবোর্ডে সমস্যা সৃষ্টিকারী ওয়েক লকটির সঠিক নামটি খুঁজুন। এটি কোনো পরিচিত সিস্টেম এপিআই বা জেটপ্যাক লাইব্রেরি দ্বারা তৈরি হয়েছে কিনা তা দেখতে, ‘অন্যান্য এপিআই দ্বারা তৈরি ওয়েক লক শনাক্তকরণ’ নির্দেশিকার সাথে এই নামটি মিলিয়ে দেখুন। যদি তাই হয়, তবে আপনাকে এপিআই-টির ব্যবহার অপ্টিমাইজ করতে হতে পারে এবং এর জন্য প্রস্তাবিত নির্দেশিকা দেখতে পারেন।
  • সিস্টেম ট্রেস ক্যাপচার করুন: যদি ওয়েক লকটি সহজে শনাক্ত করা না যায়, তবে একটি সিস্টেম ট্রেস ব্যবহার করে স্থানীয়ভাবে ওয়েক লক সমস্যাটি পুনরায় তৈরি করুন এবং পারফেটটো UI দিয়ে এটি পরীক্ষা করুন। অন্যান্য ধরণের অতিরিক্ত ওয়েক লক ডিবাগিং অংশে আপনি এটি কীভাবে করবেন সে সম্পর্কে আরও জানতে পারবেন।   এই ব্লগ পোস্টের অংশ
  • বিকল্প মূল্যায়ন করুন: যদি কোনো অদক্ষ থার্ড-পার্টি লাইব্রেরি এর জন্য দায়ী হয় এবং ব্যাটারির আয়ু মেনে চলার জন্য সেটিকে কনফিগার করা না যায়, তাহলে SDK-টির মালিকদের সাথে বিষয়টি নিয়ে আলোচনা করার, একটি বিকল্প SDK খুঁজে বের করার অথবা অভ্যন্তরীণভাবে কার্যকারিতাটি তৈরি করার কথা বিবেচনা করুন।

সাধারণ ওয়েক লক পরিস্থিতি

আমরা পর্যালোচনা করেছি এমন কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্র নিচে বিশদভাবে বর্ণনা করা হলো, সাথে আপনার ওয়েক লক বাস্তবায়নকে অপ্টিমাইজ করার জন্য প্রস্তাবিত পথও দেওয়া হলো।

ব্যবহারকারী-প্রবর্তিত আপলোড বা ডাউনলোড

ব্যবহারের উদাহরণ:

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

ওয়েক লক কমানোর উপায়:

  • ম্যানুয়াল ওয়েক লক অর্জন করবেন না। এর পরিবর্তে, ইউজার-ইনিশিয়েটেড ডেটা ট্রান্সফার (UIDT) API ব্যবহার করুন। এটি ব্যবহারকারী দ্বারা শুরু করা দীর্ঘস্থায়ী ডেটা ট্রান্সফার টাস্কের জন্য নির্ধারিত পথ, এবং এটি অতিরিক্ত ওয়েক লক গণনা থেকে অব্যাহতিপ্রাপ্ত।

এককালীন বা পর্যায়ক্রমিক ব্যাকগ্রাউন্ড সিঙ্ক

ব্যবহারের উদাহরণ:

  • একটি অ্যাপ অফলাইনে ব্যবহারের জন্য ডেটা সংগ্রহ করতে নির্দিষ্ট সময় অন্তর ব্যাকগ্রাউন্ডে সিঙ্ক করে।
  • পেডোমিটার অ্যাপ যা নির্দিষ্ট সময় পর পর পদক্ষেপের সংখ্যা সংগ্রহ করে।

ওয়েক লক কমানোর উপায়:

  • ম্যানুয়াল ওয়েক লক ব্যবহার করবেন না। এককালীন বা পর্যায়ক্রমিক কাজের জন্য কনফিগার করা ওয়ার্কম্যানেজার ব্যবহার করুন। WorkManager টাস্কগুলোকে ব্যাচিং করার মাধ্যমে সিস্টেমের স্বাস্থ্য রক্ষা করে এবং এর একটি ন্যূনতম পর্যায়ক্রমিক ব্যবধান (১৫ মিনিট) রয়েছে, যা সাধারণত ব্যাকগ্রাউন্ড আপডেটের জন্য যথেষ্ট।
  • যদি আপনি WorkManager বা JobScheduler দ্বারা তৈরি ওয়েক লকগুলিতে উচ্চ ওয়েক লক ব্যবহার লক্ষ্য করেন, তবে এর কারণ হতে পারে যে আপনি নির্দিষ্ট পরিস্থিতিতে আপনার ওয়ার্কারকে সম্পূর্ণ না হওয়ার জন্য ভুলভাবে কনফিগার করেছেন। ওয়ার্কার বন্ধ হওয়ার কারণগুলি বিশ্লেষণ করার কথা বিবেচনা করুন, বিশেষ করে যদি আপনি STOP_REASON_TIMEOUT- এর উচ্চ হার দেখতে পান।
workManager.getWorkInfoByIdFlow(syncWorker.id)
  .collect { workInfo ->
      if (workInfo != null) {
        val stopReason = workInfo.stopReason
        logStopReason(syncWorker.id, stopReason)
      }
  }
  • ওয়ার্কার বন্ধ হওয়ার কারণগুলো লগ করার পাশাপাশি, আপনার ওয়ার্কার ডিবাগ করার জন্য আমাদের ডকুমেন্টেশন দেখুন। এছাড়াও, কখন ওয়েক লক অর্জিত এবং মুক্ত হয় তা বোঝার জন্য সিস্টেম ট্রেস সংগ্রহ ও বিশ্লেষণ করার কথা বিবেচনা করুন।
  • অবশেষে, WHOOP-এর সাথে আমাদের কেস স্টাডিটি দেখুন, যেখানে তারা তাদের ওয়ার্কারদের কনফিগারেশনের একটি সমস্যা খুঁজে বের করতে এবং তাদের ওয়েক লক-এর প্রভাব উল্লেখযোগ্যভাবে কমাতে সক্ষম হয়েছিল।

ব্লুটুথ যোগাযোগ

ব্যবহারের উদাহরণ:

  • কম্প্যানিয়ন ডিভাইস অ্যাপটি ব্যবহারকারীকে তাদের ব্লুটুথ এক্সটার্নাল ডিভাইসটি পেয়ার করতে অনুরোধ করে।
  • কম্প্যানিয়ন ডিভাইস অ্যাপটি একটি বাহ্যিক ডিভাইসের হার্ডওয়্যার ইভেন্টগুলো পর্যবেক্ষণ করে এবং নোটিফিকেশনের মাধ্যমে ব্যবহারকারীকে পরিবর্তনগুলো দেখিয়ে দেয়।
  • কম্প্যানিয়ন ডিভাইস অ্যাপের ব্যবহারকারী মোবাইল ও ব্লুটুথ ডিভাইসের মধ্যে একটি ফাইল স্থানান্তর শুরু করেন।
  • কম্প্যানিয়ন ডিভাইস অ্যাপটি ব্লুটুথের মাধ্যমে একটি বাহ্যিক ডিভাইসে মাঝেমধ্যে ফার্মওয়্যার আপডেট করে।

ওয়েক লক কমানোর উপায়:

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

অবস্থান ট্র্যাকিং

ব্যবহারের উদাহরণ:

  • ফিটনেস অ্যাপ যা পরবর্তীতে আপলোড করার জন্য অবস্থানের ডেটা ক্যাশ করে রাখে, যেমন দৌড়ানোর রুট পরিকল্পনা করা।
  • ফুড ডেলিভারি অ্যাপগুলো নোটিফিকেশন বা উইজেট UI-তে ডেলিভারির অগ্রগতি আপডেট করার জন্য ঘন ঘন লোকেশন ডেটা সংগ্রহ করে।

ওয়েক লক কমানোর উপায়:

  • অবস্থানের ব্যবহার অপ্টিমাইজ করতে আমাদের নির্দেশিকা দেখুন। ব্যাটারির কার্যকারিতা নিশ্চিত করতে টাইমআউট প্রয়োগ, লোকেশন রিকোয়েস্ট ব্যাচিং, অথবা প্যাসিভ লোকেশন আপডেট ব্যবহার করার কথা বিবেচনা করুন।
  • FusedLocationProvider বা LocationManager API ব্যবহার করে লোকেশন আপডেটের অনুরোধ করার সময়, সিস্টেম স্বয়ংক্রিয়ভাবে লোকেশন ইভেন্ট কলব্যাকের সময় ডিভাইসটিকে জাগিয়ে তোলে। এই সংক্ষিপ্ত, সিস্টেম-পরিচালিত ওয়েক লকটি অতিরিক্ত আংশিক ওয়েক লক গণনার আওতামুক্ত।
  • অবস্থান ডেটা ক্যাশ করার জন্য একটি পৃথক, নিরবচ্ছিন্ন ওয়েক লক অর্জন করা পরিহার করুন, কারণ এটি অপ্রয়োজনীয়। এর পরিবর্তে, অবস্থান ইভেন্টগুলিকে মেমরি বা স্থানীয় স্টোরেজে সংরক্ষণ করুন এবং নির্দিষ্ট বিরতিতে সেগুলিকে প্রক্রিয়া করার জন্য WorkManager ব্যবহার করুন।
override fun onCreate(savedInstanceState: Bundle?) {
    locationCallback = object : LocationCallback() {
        override fun onLocationResult(locationResult: LocationResult?) {
            locationResult ?: return
            // System wakes up CPU for short duration
            for (location in locationResult.locations){
                // Store data in memory to process at another time
            }
        }
    }
}

উচ্চ ফ্রিকোয়েন্সি সেন্সর পর্যবেক্ষণ

ব্যবহারের উদাহরণ:

  • পেডোমিটার অ্যাপ যা স্বয়ংক্রিয়ভাবে পদক্ষেপ বা অতিক্রান্ত দূরত্ব সংগ্রহ করে।
  • নিরাপত্তা অ্যাপগুলো রিয়েল টাইমে ডিভাইসের সেন্সরগুলোর দ্রুত পরিবর্তন পর্যবেক্ষণ করে, যার মাধ্যমে সংঘর্ষ শনাক্তকরণ বা পতন শনাক্তকরণের মতো ফিচার প্রদান করা হয়।

ওয়েক লক কমানোর উপায়:

  • SensorManager ব্যবহার করলে, এর ব্যবহার নির্দিষ্ট সময় অন্তর অন্তর করুন এবং শুধুমাত্র তখনই ব্যবহার করুন যখন ব্যবহারকারী UI ইন্টারঅ্যাকশনের মাধ্যমে সুস্পষ্টভাবে অ্যাক্সেসের অনুমতি দেন। ঘন ঘন সিপিইউ চালু হওয়া এবং প্রসেসিংয়ের কারণে, উচ্চ ফ্রিকোয়েন্সিতে সেন্সর মনিটরিং করলে ব্যাটারির দ্রুত ক্ষয় হতে পারে।
  • আপনি যদি পদক্ষেপের সংখ্যা বা অতিক্রান্ত দূরত্ব ট্র্যাক করেন, তাহলে SensorManager ব্যবহার না করে Recording API কাজে লাগান অথবা ব্যাটারি-সাশ্রয়ী উপায়ে ডেটা সংগ্রহের জন্য ডিভাইসের পূর্ববর্তী ও সামগ্রিক পদক্ষেপের সংখ্যা অ্যাক্সেস করতে Health Connect ব্যবহার করার কথা বিবেচনা করুন।
  • আপনি যদি SensorManager-এর সাথে কোনো সেন্সর রেজিস্টার করেন, তাহলে সেন্সর ব্যাচিং ব্যবহার করে সিপিইউ ইন্টারাপ্টের সংখ্যা কমানোর জন্য maxReportLatencyUs ৩০ সেকেন্ড বা তার বেশি নির্দিষ্ট করুন। পরবর্তীতে যখন ব্যবহারকারীর ইন্টারঅ্যাকশন, অবস্থান পুনরুদ্ধার বা কোনো নির্ধারিত কাজের মতো অন্য কোনো ট্রিগারের মাধ্যমে ডিভাইসটি সক্রিয় হবে, তখন সিস্টেমটি সঙ্গে সঙ্গে ক্যাশ করা সেন্সর ডেটা প্রেরণ করবে।
val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)

sensorManager.registerListener(this,
                 accelerometer,
                 samplingPeriodUs, // How often to sample data
                 maxReportLatencyUs // Key for sensor batching 
              )
  • আপনার অ্যাপের যদি অবস্থান এবং সেন্সর ডেটা উভয়েরই প্রয়োজন হয়, তবে সেগুলোর ইভেন্ট গ্রহণ এবং প্রক্রিয়াকরণ সিঙ্ক্রোনাইজ করুন। অবস্থান আপডেটের জন্য সিস্টেম যে সংক্ষিপ্ত ওয়েক লকটি চালু রাখে, তার সাথে সেন্সর রিডিংগুলো যুক্ত করে দিলে সিপিইউকে জাগিয়ে রাখার জন্য আলাদা ওয়েক লকের প্রয়োজন হয় না। এই সম্মিলিত ডেটার আপলোড এবং প্রক্রিয়াকরণ সামলানোর জন্য একটি ওয়ার্কার বা স্বল্পস্থায়ী ওয়েক লক ব্যবহার করুন।

রিমোট মেসেজিং

ব্যবহারের উদাহরণ:

  • ভিডিও বা সাউন্ড মনিটরিং সহায়ক অ্যাপ, যেগুলোর লোকাল নেটওয়ার্ক ব্যবহার করে সংযুক্ত কোনো বাহ্যিক ডিভাইসে ঘটা ঘটনা পর্যবেক্ষণ করার প্রয়োজন হয়।
  • মেসেজিং অ্যাপগুলো ডেস্কটপ সংস্করণের সাথে নেটওয়ার্ক সকেট সংযোগ বজায় রাখে।

ওয়েক লক কমানোর উপায়:

  • যদি নেটওয়ার্ক ইভেন্টগুলো সার্ভার সাইডে প্রসেস করা যায়, তাহলে ক্লায়েন্টে তথ্য গ্রহণ করার জন্য FCM ব্যবহার করুন। যদি FCM ডেটার অতিরিক্ত প্রসেসিংয়ের প্রয়োজন হয়, তবে আপনি একটি এক্সপেডিটেড ওয়ার্কার শিডিউল করার সিদ্ধান্ত নিতে পারেন।
  • যদি সকেট সংযোগের মাধ্যমে ক্লায়েন্ট সাইডে ইভেন্টগুলি প্রসেস করতে হয়, তবে ইভেন্ট ইন্টারাপ্ট শোনার জন্য ওয়েক লকের প্রয়োজন হয় না। যখন ডেটা প্যাকেট ওয়াই-ফাই বা সেলুলার রেডিওতে এসে পৌঁছায়, তখন রেডিও হার্ডওয়্যারটি একটি কার্নেল ওয়েক লকের আকারে একটি হার্ডওয়্যার ইন্টারাপ্ট ট্রিগার করে। এরপর আপনি ডেটা প্রসেস করার জন্য একটি ওয়ার্কার শিডিউল করতে বা একটি ওয়েক লক অ্যাকোয়ার করতে পারেন।
  • উদাহরণস্বরূপ, যদি আপনি কোনো নেটওয়ার্ক সকেটে ডেটা প্যাকেট শোনার জন্য ktor-network ব্যবহার করেন, তবে প্যাকেটগুলো ক্লায়েন্টের কাছে পৌঁছে গেলে এবং সেগুলোকে প্রসেস করার প্রয়োজন হলেই কেবল আপনার একটি ওয়েক লক অ্যাকোয়ার করা উচিত।
val readChannel = socket.openReadChannel()
while (!readChannel.isClosedForRead) {
    // CPU can safely sleep here while waiting for the next packet
    val packet = readChannel.readRemaining(1024) 
    if (!packet.isEmpty) {
         // Data Arrived: The system woke the CPU and we should keep it awake via manual wake lock (urgent) or scheduling a worker (non-urgent)
         performWorkWithWakeLock { 
              val data = packet.readBytes()
              // Additional logic to process data packets
         }
    }
}

সারসংক্ষেপ

ব্যাকগ্রাউন্ড সিঙ্ক, লোকেশন ট্র্যাকিং, সেন্সর মনিটরিং এবং নেটওয়ার্ক কমিউনিকেশনের মতো সাধারণ ব্যবহারের ক্ষেত্রে এই প্রস্তাবিত সমাধানগুলো গ্রহণ করার মাধ্যমে, ডেভেলপাররা অপ্রয়োজনীয় ওয়েক লক ব্যবহার কমাতে কাজ করতে পারেন। আরও জানতে, আমাদের অন্য টেকনিক্যাল ব্লগ পোস্টটি পড়ুন অথবা ওয়েক লক কীভাবে খুঁজে বের ও ডিবাগ করতে হয় সে বিষয়ে আমাদের টেকনিক্যাল ভিডিওটি দেখুন : অ্যান্ড্রয়েড ভাইটালস ওয়েক লক মেট্রিক ব্যবহার করে আপনার অ্যাপের ব্যাটারি অপ্টিমাইজ করুন । এছাড়াও, আমাদের আপডেট করা ওয়েক লক ডকুমেন্টেশন দেখুন। আমাদের টেকনিক্যাল রিসোর্সগুলোর উন্নতি অব্যাহত রাখতে সাহায্য করার জন্য, অনুগ্রহ করে আমাদের ডকুমেন্টেশন ফিডব্যাক সার্ভেতে আমাদের নির্দেশিকা সম্পর্কে যেকোনো অতিরিক্ত মতামত শেয়ার করুন।

    লিখেছেন:

    পড়তে থাকুন