ব্যাটারি লাইফের জন্য লোকেশন ব্যবহার অপ্টিমাইজ করুন

অবস্থান পরিষেবাগুলি ব্যবহার করার সময় ডিভাইসের ব্যাটারি লাইফের উপর আপনার অ্যাপের প্রভাব উন্নত করতে নিম্নলিখিত পদক্ষেপগুলি নিন৷

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

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

এটি ঘটতে পারে যখন কোনো অ্যাক্টিভিটির 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 (এপিআই লেভেল 26) সীমাগুলি এই অনুশীলনকে কার্যকর করে, তবে নিম্ন ডিভাইসে চলমান অ্যাপগুলিকে যতটা সম্ভব ব্যাকগ্রাউন্ডের অবস্থান সীমিত করার চেষ্টা করা উচিত।

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

কোটলিন

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() এ নির্দিষ্ট ব্যবধানটি খুব ছোট হওয়া উচিত নয়।