ব্যাটারির জন্য অবস্থান অপ্টিমাইজ করুন

Android 8.0 (API স্তর 26) এ প্রবর্তিত ব্যাকগ্রাউন্ড লোকেশন সীমাগুলি লোকেশন পরিষেবার ব্যবহার কীভাবে ব্যাটারি ড্রেনকে প্রভাবিত করে সেই বিষয়ে নতুন করে ফোকাস এনেছে। এই পৃষ্ঠাটি কিছু অবস্থান পরিষেবার সর্বোত্তম অনুশীলন এবং আপনার অ্যাপগুলিকে আরও ব্যাটারি দক্ষ করে তুলতে আপনি এখন কী করতে পারেন তা সম্বোধন করে৷ এই সর্বোত্তম অনুশীলনগুলি প্রয়োগ করলে আপনার অ্যাপটি যে প্ল্যাটফর্ম সংস্করণে চলছে তা নির্বিশেষে উপকৃত হয়।

অ্যান্ড্রয়েড 8.0-এ পটভূমি অবস্থানের সীমা নিম্নলিখিত পরিবর্তনগুলি প্রবর্তন করেছে:

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

এই পৃষ্ঠাটি অনুমান করে যে আপনি Google অবস্থান পরিষেবা APIগুলি ব্যবহার করছেন, যা উচ্চতর নির্ভুলতা অফার করে এবং ফ্রেমওয়ার্ক অবস্থান APIগুলির তুলনায় একটি হালকা ব্যাটারির বোঝা চাপিয়ে দেয়৷ বিশেষ করে, এই পৃষ্ঠাটি ফিউজড লোকেশন প্রদানকারী API এর সাথে পরিচিতি অনুমান করে, যা GPS, Wi-Fi এবং সেল নেটওয়ার্কগুলির পাশাপাশি অ্যাক্সিলোমিটার, জাইরোস্কোপ, ম্যাগনেটোমিটার এবং অন্যান্য সেন্সরগুলির সংকেতগুলিকে একত্রিত করে৷ আপনার জিওফেন্সিং API এর সাথেও পরিচিত হওয়া উচিত, যা ফিউজড লোকেশন প্রদানকারী API এর উপরে তৈরি করা হয়েছে এবং ব্যাটারি পারফরম্যান্সের জন্য অপ্টিমাইজ করা হয়েছে।

ব্যাটারি ড্রেন বুঝুন

অবস্থান সংগ্রহ এবং ব্যাটারি ড্রেন নিম্নলিখিত দিকগুলির সাথে সরাসরি সম্পর্কিত:

  • নির্ভুলতা: অবস্থানের ডেটার নির্ভুলতা। সাধারণভাবে, নির্ভুলতা যত বেশি, ব্যাটারি ড্রেন তত বেশি।
  • ফ্রিকোয়েন্সি: কত ঘন ঘন অবস্থান গণনা করা হয়। যত ঘন ঘন অবস্থান গণনা করা হয়, তত বেশি ব্যাটারি ব্যবহৃত হয়।
  • লেটেন্সি: কত দ্রুত লোকেশন ডেটা ডেলিভারি করা হয়। কম বিলম্বে সাধারণত বেশি ব্যাটারির প্রয়োজন হয়।

নির্ভুলতা

আপনি setPriority() পদ্ধতি ব্যবহার করে অবস্থান নির্ভুলতা নির্দিষ্ট করতে পারেন, আর্গুমেন্ট হিসাবে নিম্নলিখিত মানগুলির মধ্যে একটি পাস করুন:

  • PRIORITY_HIGH_ACCURACY সম্ভাব্য সর্বাধিক নির্ভুল অবস্থান প্রদান করে, যা প্রয়োজনীয় যতগুলি ইনপুট ব্যবহার করে গণনা করা হয় (এটি GPS, Wi-Fi, এবং সেল সক্ষম করে এবং বিভিন্ন ধরনের সেন্সর ব্যবহার করে) এবং উল্লেখযোগ্য ব্যাটারি নিষ্কাশনের কারণ হতে পারে৷
  • PRIORITY_BALANCED_POWER_ACCURACY পাওয়ার জন্য অপ্টিমাইজ করার সময় সঠিক অবস্থান প্রদান করে৷ খুব কমই জিপিএস ব্যবহার করে। সাধারণত ডিভাইসের অবস্থান গণনা করতে Wi-Fi এবং সেল তথ্যের সংমিশ্রণ ব্যবহার করে।
  • PRIORITY_LOW_POWER মূলত সেল টাওয়ারের উপর নির্ভর করে এবং GPS এবং Wi-Fi ইনপুট এড়িয়ে যায়, ন্যূনতম ব্যাটারি ড্রেন সহ মোটা (শহর-স্তরের) নির্ভুলতা প্রদান করে।
  • PRIORITY_NO_POWER অন্যান্য অ্যাপ্লিকেশানগুলি থেকে নিষ্ক্রিয়ভাবে অবস্থানগুলি গ্রহণ করে যার জন্য অবস্থান ইতিমধ্যে গণনা করা হয়েছে৷

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

ফ্রিকোয়েন্সি

আপনি দুটি পদ্ধতি ব্যবহার করে অবস্থানের ফ্রিকোয়েন্সি নির্দিষ্ট করতে পারেন:

  • আপনার অ্যাপের জন্য কোন অবস্থানে গণনা করা হবে তা নির্দিষ্ট করতে setinterval() পদ্ধতি ব্যবহার করুন।
  • আপনার অ্যাপে অন্য অ্যাপের জন্য গণনা করা লোকেশনের ব্যবধানটি নির্দিষ্ট করতে setFastestInterval() ব্যবহার করুন।

setInterval() ব্যবহার করার সময় আপনার সবচেয়ে বড় সম্ভাব্য মান পাস করা উচিত। এটি ব্যাকগ্রাউন্ড অবস্থান সংগ্রহের জন্য বিশেষভাবে সত্য, যা প্রায়শই অনাকাঙ্ক্ষিত ব্যাটারি নিষ্কাশনের উত্স। ফোরগ্রাউন্ড ব্যবহারের ক্ষেত্রে কয়েক সেকেন্ডের ব্যবধান ব্যবহার করা উচিত। অ্যান্ড্রয়েড 8.0-এ প্রবর্তিত ব্যাকগ্রাউন্ড লোকেশন সীমাগুলি এই কৌশলগুলিকে কার্যকর করে, কিন্তু আপনার অ্যাপের উচিত অ্যান্ড্রয়েড 7.0 বা নিম্নতর ডিভাইসগুলিতে সেগুলি প্রয়োগ করার চেষ্টা করা।

লেটেন্সি

আপনি setMaxWaitTime() পদ্ধতি ব্যবহার করে লেটেন্সি নির্দিষ্ট করতে পারেন, সাধারণত setInterval() পদ্ধতিতে নির্দিষ্ট ব্যবধানের চেয়ে কয়েকগুণ বড় একটি মান পাস করে। এই সেটিং লোকেশন ডেলিভারি বিলম্বিত করে, এবং একাধিক লোকেশন আপডেট ব্যাচে বিতরণ করা হতে পারে। এই দুটি পরিবর্তন ব্যাটারি খরচ কমাতে সাহায্য করে।

যদি আপনার অ্যাপের অবিলম্বে একটি অবস্থান আপডেটের প্রয়োজন না হয়, তাহলে আপনাকে setMaxWaitTime() পদ্ধতিতে সবচেয়ে বড় সম্ভাব্য মান পাস করা উচিত, কার্যকরভাবে আরও ডেটা এবং ব্যাটারির দক্ষতার জন্য লেটেন্সি ট্রেড করা।

জিওফেন্স ব্যবহার করার সময়, অ্যাপগুলিকে শক্তি সংরক্ষণের জন্য setNotificationResponsiveness() পদ্ধতিতে একটি বড় মান পাস করা উচিত। পাঁচ মিনিট বা তার চেয়ে বড় মান বাঞ্ছনীয়।

অবস্থান ব্যবহার ক্ষেত্রে

এই বিভাগে জিওফেন্সিং এবং ফিউজড লোকেশন প্রোভাইডার API-এর সর্বোত্তম ব্যবহারের জন্য সুপারিশ সহ কিছু সাধারণ অবস্থান-সংগ্রহের পরিস্থিতি বর্ণনা করা হয়েছে।

ব্যবহারকারীর দৃশ্যমান বা ফোরগ্রাউন্ড আপডেট

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

PRIORITY_HIGH_ACCURACY বা PRIORITY_BALANCED_POWER_ACCURACY মান সহ setPriority() পদ্ধতি ব্যবহার করুন।

setInterval() পদ্ধতিতে নির্দিষ্ট ব্যবধানটি ব্যবহারের ক্ষেত্রে নির্ভর করে: বাস্তব সময়ের পরিস্থিতির জন্য, মানটিকে কয়েক সেকেন্ডে সেট করুন; অন্যথায়, কয়েক মিনিটের মধ্যে সীমাবদ্ধ করুন (ব্যাটারি ব্যবহার কমানোর জন্য প্রায় দুই মিনিট বা তার বেশি বাঞ্ছনীয়)।

ডিভাইসটির অবস্থান জানা

উদাহরণ: একটি আবহাওয়া অ্যাপ ডিভাইসের অবস্থান জানতে চায়।

getLastLocation() পদ্ধতিটি ব্যবহার করুন, যা অতি সম্প্রতি উপলব্ধ অবস্থান প্রদান করে (যা বিরল ক্ষেত্রে শূন্য হতে পারে)। এই পদ্ধতিটি অবস্থান পাওয়ার একটি সহজ উপায় প্রদান করে এবং সক্রিয়ভাবে অবস্থান আপডেটের অনুরোধ করার সাথে সম্পর্কিত খরচ বহন করে না। isLocationAvailable() পদ্ধতির সাথে একত্রে ব্যবহার করুন, যা getLastLocation() দ্বারা প্রত্যাবর্তিত অবস্থানটি যুক্তিসঙ্গতভাবে আপ-টু-ডেট হলে true দেখায়।

যখন একজন ব্যবহারকারী একটি নির্দিষ্ট অবস্থানে থাকে তখন আপডেট শুরু করা

উদাহরণ: একজন ব্যবহারকারী যখন কর্মক্ষেত্র, বাড়ি বা অন্য অবস্থানের একটি নির্দিষ্ট দূরত্বের মধ্যে থাকে তখন আপডেটের অনুরোধ করা।

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

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

ব্যবহারকারীর কার্যকলাপ অবস্থার উপর ভিত্তি করে আপডেট শুরু করা হচ্ছে

উদাহরণ: ব্যবহারকারী যখন গাড়ি চালাচ্ছেন বা বাইক চালাচ্ছেন তখনই আপডেটের অনুরোধ করা।

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

এই ব্যবহারের ক্ষেত্রে সাধারণ কর্মপ্রবাহের মধ্যে সনাক্ত করা কার্যকলাপের জন্য একটি বিজ্ঞপ্তি প্রকাশ করা এবং ব্যবহারকারী যখন বিজ্ঞপ্তিতে ট্যাপ করে তখন আপডেটের অনুরোধ করার জন্য কোড ধারণ করে এমন একটি কার্যকলাপ চালু করা জড়িত থাকতে পারে।

ভৌগলিক এলাকায় আবদ্ধ দীর্ঘ চলমান পটভূমি অবস্থান আপডেট

উদাহরণ: ডিভাইসটি একজন খুচরা বিক্রেতার সান্নিধ্যের মধ্যে থাকলে ব্যবহারকারী বিজ্ঞপ্তি পেতে চায়।

এটি জিওফেন্সিংয়ের জন্য একটি চমৎকার ব্যবহারের ক্ষেত্রে। যেহেতু ব্যবহারের ক্ষেত্রে প্রায় অবশ্যই পটভূমির অবস্থান জড়িত, addGeofences(GeofencingRequest, PendingIntent) পদ্ধতি ব্যবহার করুন।

আপনার নিম্নলিখিত কনফিগারেশন বিকল্পগুলি সেট করা উচিত:

  • আপনি যদি dwell ট্রানজিশন ট্র্যাক করছেন, setLoiteringDelay() পদ্ধতিটি ব্যবহার করুন যা প্রায় পাঁচ মিনিট বা তার কম মান অতিক্রম করে।

  • setNotificationResponsiveness() ব্যবহার করুন, প্রায় পাঁচ মিনিটের মান অতিক্রম করে। যাইহোক, যদি আপনার অ্যাপ প্রতিক্রিয়াশীলতার অতিরিক্ত বিলম্ব পরিচালনা করতে পারে তবে আনুমানিক দশ মিনিটের মান ব্যবহার করার কথা বিবেচনা করুন।

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

দৃশ্যমান অ্যাপ কম্পোনেন্ট ছাড়াই ব্যাকগ্রাউন্ডের লোকেশন আপডেট দীর্ঘক্ষণ চলছে

উদাহরণ: একটি অ্যাপ যা প্যাসিভভাবে অবস্থান ট্র্যাক করে

যদি সম্ভব হয় তাহলে PRIORITY_NO_POWER বিকল্পের সাথে setPriority() পদ্ধতি ব্যবহার করুন কারণ এতে প্রায় কোনো ব্যাটারি ড্রেন হয় না। PRIORITY_NO_POWER ব্যবহার করা সম্ভব না হলে, PRIORITY_BALANCED_POWER_ACCURACY বা PRIORITY_LOW_POWER ব্যবহার করুন, কিন্তু টেকসই ব্যাকগ্রাউন্ড কাজের জন্য PRIORITY_HIGH_ACCURACY ব্যবহার করা এড়িয়ে চলুন কারণ এই বিকল্পটি যথেষ্ট পরিমাণে ব্যাটারি নিষ্কাশন করে৷

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

setMaxWaitTime() পদ্ধতি ব্যবহার করে কিছু লেটেন্সি যোগ করে মাঝারি ফ্রিকোয়েন্সি। উদাহরণ স্বরূপ, আপনি যদি প্রায় 10 মিনিটের মান সহ setinterval() পদ্ধতি ব্যবহার করেন, তাহলে আপনার 30 থেকে 60 মিনিটের মান সহ setMaxWaitTime() কল করার কথা বিবেচনা করা উচিত। এই বিকল্পগুলি ব্যবহার করে, আপনার অ্যাপের জন্য প্রায় প্রতি 10 মিনিটে অবস্থান গণনা করা হয়, কিন্তু অ্যাপটি শুধুমাত্র প্রতি 30 থেকে 60 মিনিটে জাগ্রত হয় এবং একটি ব্যাচ আপডেট হিসাবে কিছু অবস্থানের ডেটা পাওয়া যায়। এই পদ্ধতিটি আরও ডেটা উপলব্ধ এবং আরও ভাল ব্যাটারির কার্যকারিতার জন্য লেটেন্সি ট্রেড করে।

ব্যবহারকারী অন্যান্য অ্যাপের সাথে ইন্টারঅ্যাক্ট করার সময় ঘন ঘন উচ্চ নির্ভুলতা আপডেট

উদাহরণ: একটি নেভিগেশন বা ফিটনেস অ্যাপ যেটি কাজ করতে থাকে যখন ব্যবহারকারী হয় স্ক্রীন বন্ধ করে দেয় বা একটি ভিন্ন অ্যাপ খোলে।

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

অবস্থান সেরা অনুশীলন

এই বিভাগে সর্বোত্তম অনুশীলনগুলি প্রয়োগ করা আপনার অ্যাপের ব্যাটারি ব্যবহার কমাতে সহায়তা করে৷

অবস্থান আপডেট সরান

অপ্রয়োজনীয় ব্যাটারি নিষ্কাশনের একটি সাধারণ উত্স হল অবস্থান আপডেটগুলি সরাতে ব্যর্থতা যখন তাদের আর প্রয়োজন হয় না। এটি ঘটতে পারে, উদাহরণস্বরূপ, যখন কোনো অ্যাক্টিভিটির onStart() বা onResume() লাইফসাইকেল পদ্ধতিতে onPause() বা onStop() লাইফসাইকেল পদ্ধতিতে removeLocationUpdates() করার জন্য সংশ্লিষ্ট কল ছাড়া requestlocationUpdates() এ একটি কল থাকে।

আপনার অ্যাপে ক্রিয়াকলাপগুলির জীবনচক্র আরও ভালভাবে পরিচালনা করতে আপনি জীবনচক্র-সচেতন উপাদানগুলি ব্যবহার করতে পারেন। আরও তথ্যের জন্য, লাইফসাইকেল-সচেতন উপাদানগুলির সাথে লাইফসাইকেল পরিচালনা দেখুন।

সময়সীমা সেট করুন

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

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

একটি জিওফেন্স অবস্থানের অনুরোধে একটি সময়সীমা যোগ করতে, setExpirationDuration() পদ্ধতিতে কল করুন।

ব্যাচ অনুরোধ

সমস্ত নন-ফোরগ্রাউন্ড ব্যবহারের ক্ষেত্রে, একাধিক অনুরোধ একসাথে ব্যাচ করুন। আপনি যে ব্যবধানে অবস্থান গণনা করতে চান সেটি নির্দিষ্ট করতে আপনি setInterval() পদ্ধতি ব্যবহার করতে পারেন। তারপরে, আপনার অ্যাপে কোন অবস্থানে বিতরণ করা হবে তা সেট করতে setMaxWaitTime() পদ্ধতি ব্যবহার করুন। setMaxWaitTime() পদ্ধতিতে পাস করা মান setInterval() পদ্ধতিতে পাস করা মানের একাধিক হওয়া উচিত। উদাহরণস্বরূপ, নিম্নলিখিত অবস্থানের অনুরোধ বিবেচনা করুন:

কোটলিন

val request = LocationRequest()
request.setInterval(10 * 60 * 1000)
request.setMaxWaitTime(60 * 60 * 1000)

জাভা

LocationRequest request = new LocationRequest();
request.setInterval(10 * 60 * 1000);
request.setMaxWaitTime(60 * 60 * 1000);

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

প্যাসিভ অবস্থান আপডেট ব্যবহার করুন

ব্যাকগ্রাউন্ড ব্যবহারের ক্ষেত্রে, অবস্থান আপডেটগুলি থ্রোটল করা একটি ভাল ধারণা। অ্যান্ড্রয়েড 8.0 সীমাগুলি এই অভ্যাসটি প্রয়োগ করে, তবে পুরানো ডিভাইসগুলিতে চলমান অ্যাপগুলিকে যতটা সম্ভব পটভূমির অবস্থান সীমিত করার চেষ্টা করা উচিত।

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

কোটলিন

val request = LocationRequest()
request.setInterval(15 * 60 * 1000)
request.setFastestInterval(2 * 60 * 1000)

জাভা

LocationRequest request = new LocationRequest();
request.setInterval(15 * 60 * 1000);
request.setFastestInterval(2 * 60 * 1000);

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

প্যাসিভভাবে অবস্থান গ্রহণ করার সময় ব্যাটারি ড্রেন না হয়, এমন ক্ষেত্রে অতিরিক্ত যত্ন নিন যেখানে লোকেশন ডেটার প্রাপ্তি ব্যয়বহুল CPU বা I/O অপারেশনকে ট্রিগার করে। ব্যাটারি খরচ কমানোর জন্য, setFastestInterval() এ নির্দিষ্ট ব্যবধানটি খুব ছোট হওয়া উচিত নয়।

আপনি এই পৃষ্ঠার সুপারিশগুলি অনুসরণ করে আপনার ব্যবহারকারীদের ডিভাইসের ব্যাটারি কর্মক্ষমতা উল্লেখযোগ্যভাবে উন্নত করতে পারেন৷ আপনার ব্যবহারকারীদের এমন অ্যাপ মুছে ফেলার সম্ভাবনা কম যা তাদের ব্যাটারি নিষ্কাশন করে না।