নেটওয়ার্ক অ্যাক্সেস অপ্টিমাইজ করুন

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

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

রেডিও স্টেট মেশিন

আপনার ব্যবহারকারীর ডিভাইসে থাকা ওয়্যারলেস রেডিওতে বিল্ট-ইন পাওয়ার-সেভিং বৈশিষ্ট্য রয়েছে যা এটি যে পরিমাণ ব্যাটারি শক্তি খরচ করে তা কমাতে সাহায্য করে৷ যখন সম্পূর্ণ সক্রিয় থাকে, বেতার রেডিও উল্লেখযোগ্য শক্তি খরচ করে, কিন্তু যখন নিষ্ক্রিয় বা স্ট্যান্ডবাই থাকে, তখন রেডিও খুব কম শক্তি খরচ করে।

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

একটি সাধারণ 3G নেটওয়ার্ক রেডিওর জন্য স্টেট মেশিনে তিনটি শক্তির অবস্থা থাকে:

  • সম্পূর্ণ শক্তি : যখন একটি সংযোগ সক্রিয় থাকে তখন ব্যবহৃত হয়, ডিভাইসটিকে তার সর্বোচ্চ সম্ভাব্য হারে ডেটা স্থানান্তর করতে দেয়।
  • কম শক্তি : একটি মধ্যবর্তী অবস্থা যা ব্যাটারি পাওয়ার খরচ প্রায় 50% কম করে।
  • স্ট্যান্ডবাই : ন্যূনতম বিদ্যুৎ-ব্যবহারকারী অবস্থা যেখানে কোনো নেটওয়ার্ক সংযোগ সক্রিয় থাকে না।

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

লেটেন্সি কমানোর জন্য, স্টেট মেশিন লোয়ার এনার্জি স্টেটে পরিবর্তন স্থগিত করতে বিলম্ব ব্যবহার করে। চিত্র 1 একটি সাধারণ 3G রেডিওর জন্য AT&T এর সময় ব্যবহার করে।


চিত্র 1. সাধারণ 3G বেতার রেডিও স্টেট মেশিন।

প্রতিটি ডিভাইসে রেডিও স্টেট মেশিন, বিশেষ করে সংশ্লিষ্ট ট্রানজিশন বিলম্ব ("টেইল টাইম") এবং স্টার্টআপ লেটেন্সি, নিয়োজিত বেতার রেডিও প্রযুক্তির (3G, LTE, 5G, এবং আরও) উপর ভিত্তি করে পরিবর্তিত হবে এবং এটি সংজ্ঞায়িত এবং কনফিগার করা হয়েছে ক্যারিয়ার নেটওয়ার্ক যার মাধ্যমে ডিভাইসটি কাজ করছে।

এই পৃষ্ঠাটি AT&T দ্বারা প্রদত্ত ডেটার উপর ভিত্তি করে একটি সাধারণ 3G ওয়্যারলেস রেডিওর জন্য একটি প্রতিনিধি রাষ্ট্র মেশিনের বর্ণনা দেয়। যাইহোক, সাধারণ নীতি এবং ফলস্বরূপ সর্বোত্তম অনুশীলনগুলি সমস্ত বেতার রেডিও বাস্তবায়নের জন্য প্রযোজ্য।

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

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

অ্যাপগুলি কীভাবে রেডিও স্টেট মেশিনকে প্রভাবিত করে

আপনি যখনই একটি নতুন নেটওয়ার্ক সংযোগ তৈরি করেন, তখন রেডিওটি সম্পূর্ণ পাওয়ার অবস্থায় রূপান্তরিত হয়। পূর্বে বর্ণিত সাধারণ 3G রেডিও স্টেট মেশিনের ক্ষেত্রে, এটি আপনার ট্রান্সফারের সময়কালের জন্য সম্পূর্ণ শক্তিতে থাকবে - এবং অতিরিক্ত 5 সেকেন্ড টেল টাইম-এর পরে কম শক্তির অবস্থায় 12 সেকেন্ড। তাই একটি সাধারণ 3G ডিভাইসের জন্য, প্রতিটি ডেটা স্থানান্তর সেশনের ফলে রেডিও কমপক্ষে 18 সেকেন্ডের জন্য শক্তি আঁকতে পারে।

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


চিত্র 2. প্রতি মিনিটে তিনবার চলমান এক-সেকেন্ডের স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার। চিত্রটি রানের মধ্যে "পাওয়ার আপ" লেটেন্সি বাদ দেয়।

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


চিত্র 3. প্রতি মিনিটে একবার চলমান তিনটি সেকেন্ড স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার।

অপ্টিমাইজেশান কৌশল

এখন যেহেতু আপনি বুঝতে পেরেছেন যে কীভাবে নেটওয়ার্ক অ্যাক্সেস ব্যাটারির আয়ুকে প্রভাবিত করে, আসুন কয়েকটি জিনিস সম্পর্কে কথা বলি যা আপনি ব্যাটারি নিষ্কাশন কমাতে সাহায্য করতে পারেন, পাশাপাশি একটি দ্রুত এবং তরল ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে পারেন৷

বান্ডিল ডেটা স্থানান্তর

পূর্ববর্তী বিভাগে যেমন বলা হয়েছে, আপনার ডেটা স্থানান্তরগুলিকে একত্রিত করা যাতে আপনি কম ঘন ঘন আরও ডেটা স্থানান্তর করতে পারেন ব্যাটারির দক্ষতা উন্নত করার সেরা উপায়গুলির মধ্যে একটি।

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

ডেটা প্রিফেচ করুন

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

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

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

এখানে একটি ব্যবহারিক উদাহরণ.

একজন সংবাদ পাঠক

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

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

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

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

অতিরিক্ত বিবেচনা

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

আপনি কতটা আক্রমনাত্মকভাবে ডেটা প্রিফেচ করবেন তা নির্ভর করে ডাউনলোড করা ডেটার আকার এবং এটি ব্যবহার করার সম্ভাবনার উপর। একটি মোটামুটি নির্দেশিকা হিসাবে, পূর্বে বর্ণিত স্টেট মেশিনের উপর ভিত্তি করে, বর্তমান ব্যবহারকারী সেশনের মধ্যে যে ডেটা ব্যবহার করার 50% সম্ভাবনা রয়েছে, আপনি সাধারণত সম্ভাব্য খরচের আগে প্রায় 6 সেকেন্ড (প্রায় 1-2 মেগাবাইট) জন্য প্রিফেচ করতে পারেন অব্যবহৃত ডেটা ডাউনলোড করা সেই ডেটা ডাউনলোড না করার সম্ভাব্য সঞ্চয়ের সাথে মেলে, শুরুতে।

সাধারণভাবে বলতে গেলে, ডেটা প্রিফেচ করার জন্য এটি একটি ভাল অভ্যাস যাতে আপনাকে প্রতি 2 থেকে 5 মিনিটে এবং 1 থেকে 5 মেগাবাইটের ক্রমে আরেকটি ডাউনলোড শুরু করতে হবে।

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

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

অনুরোধ করার আগে সংযোগ পরীক্ষা করুন

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

পুল সংযোগ

একটি অতিরিক্ত কৌশল যা ব্যাচিং এবং প্রিফেচিং ছাড়াও সাহায্য করতে পারে, তা হল আপনার অ্যাপের নেটওয়ার্ক সংযোগগুলি পুল করা৷

এটি নতুন চালু করার চেয়ে বিদ্যমান নেটওয়ার্ক সংযোগগুলি পুনরায় ব্যবহার করা সাধারণত বেশি দক্ষ। সংযোগগুলি পুনঃব্যবহার করা নেটওয়ার্ককে আরও বুদ্ধিমত্তার সাথে যানজট এবং সম্পর্কিত নেটওয়ার্ক ডেটা সমস্যাগুলিতে প্রতিক্রিয়া জানাতে দেয়।

HttpURLConnection এবং বেশিরভাগ HTTP ক্লায়েন্ট, যেমন OkHttp , ডিফল্টরূপে সংযোগ-পুলিং সক্ষম করে এবং একাধিক অনুরোধের জন্য একই সংযোগ পুনরায় ব্যবহার করে।

রিক্যাপ এবং সামনের দিকে তাকান

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

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

,

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

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

রেডিও স্টেট মেশিন

আপনার ব্যবহারকারীর ডিভাইসে থাকা ওয়্যারলেস রেডিওতে বিল্ট-ইন পাওয়ার-সেভিং বৈশিষ্ট্য রয়েছে যা এটি যে পরিমাণ ব্যাটারি শক্তি খরচ করে তা কমাতে সাহায্য করে৷ যখন সম্পূর্ণ সক্রিয় থাকে, বেতার রেডিও উল্লেখযোগ্য শক্তি খরচ করে, কিন্তু যখন নিষ্ক্রিয় বা স্ট্যান্ডবাই থাকে, তখন রেডিও খুব কম শক্তি খরচ করে।

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

একটি সাধারণ 3G নেটওয়ার্ক রেডিওর জন্য স্টেট মেশিনে তিনটি শক্তির অবস্থা থাকে:

  • সম্পূর্ণ শক্তি : যখন একটি সংযোগ সক্রিয় থাকে তখন ব্যবহৃত হয়, ডিভাইসটিকে তার সর্বোচ্চ সম্ভাব্য হারে ডেটা স্থানান্তর করতে দেয়।
  • কম শক্তি : একটি মধ্যবর্তী অবস্থা যা ব্যাটারি পাওয়ার খরচ প্রায় 50% কম করে।
  • স্ট্যান্ডবাই : ন্যূনতম বিদ্যুৎ-ব্যবহারকারী অবস্থা যেখানে কোনো নেটওয়ার্ক সংযোগ সক্রিয় থাকে না।

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

লেটেন্সি কমানোর জন্য, স্টেট মেশিন লোয়ার এনার্জি স্টেটে পরিবর্তন স্থগিত করতে বিলম্ব ব্যবহার করে। চিত্র 1 একটি সাধারণ 3G রেডিওর জন্য AT&T এর সময় ব্যবহার করে।


চিত্র 1. সাধারণ 3G বেতার রেডিও স্টেট মেশিন।

প্রতিটি ডিভাইসে রেডিও স্টেট মেশিন, বিশেষ করে সংশ্লিষ্ট ট্রানজিশন বিলম্ব ("টেইল টাইম") এবং স্টার্টআপ লেটেন্সি, নিয়োজিত বেতার রেডিও প্রযুক্তির (3G, LTE, 5G, এবং আরও) উপর ভিত্তি করে পরিবর্তিত হবে এবং এটি সংজ্ঞায়িত এবং কনফিগার করা হয়েছে ক্যারিয়ার নেটওয়ার্ক যার মাধ্যমে ডিভাইসটি কাজ করছে।

এই পৃষ্ঠাটি AT&T দ্বারা প্রদত্ত ডেটার উপর ভিত্তি করে একটি সাধারণ 3G ওয়্যারলেস রেডিওর জন্য একটি প্রতিনিধি রাষ্ট্রের মেশিন বর্ণনা করে। যাইহোক, সাধারণ নীতি এবং ফলস্বরূপ সর্বোত্তম অনুশীলন সমস্ত বেতার রেডিও বাস্তবায়নের জন্য প্রযোজ্য।

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

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

অ্যাপগুলি কীভাবে রেডিও স্টেট মেশিনকে প্রভাবিত করে

আপনি যখনই একটি নতুন নেটওয়ার্ক সংযোগ তৈরি করেন, তখন রেডিওটি সম্পূর্ণ পাওয়ার অবস্থায় রূপান্তরিত হয়। পূর্বে বর্ণিত সাধারণ 3G রেডিও স্টেট মেশিনের ক্ষেত্রে, এটি আপনার ট্রান্সফারের সময়কালের জন্য সম্পূর্ণ শক্তিতে থাকবে - এবং অতিরিক্ত 5 সেকেন্ড টেল টাইম-এর পরে কম শক্তির অবস্থায় 12 সেকেন্ড। তাই একটি সাধারণ 3G ডিভাইসের জন্য, প্রতিটি ডেটা স্থানান্তর সেশনের ফলে রেডিও কমপক্ষে 18 সেকেন্ডের জন্য শক্তি আঁকতে পারে।

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


চিত্র 2. প্রতি মিনিটে তিনবার চলমান এক-সেকেন্ডের স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার। চিত্রটি রানের মধ্যে "পাওয়ার আপ" লেটেন্সি বাদ দেয়।

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


চিত্র 3. প্রতি মিনিটে একবার চলমান তিনটি সেকেন্ড স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার।

অপ্টিমাইজেশান কৌশল

এখন যেহেতু আপনি বুঝতে পেরেছেন যে কীভাবে নেটওয়ার্ক অ্যাক্সেস ব্যাটারির আয়ুকে প্রভাবিত করে, আসুন কয়েকটি জিনিস সম্পর্কে কথা বলি যা আপনি ব্যাটারি নিষ্কাশন কমাতে সাহায্য করতে পারেন, পাশাপাশি একটি দ্রুত এবং তরল ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে পারেন৷

বান্ডিল ডেটা স্থানান্তর

পূর্ববর্তী বিভাগে যেমন বলা হয়েছে, আপনার ডেটা স্থানান্তরগুলিকে একত্রিত করা যাতে আপনি কম ঘন ঘন আরও ডেটা স্থানান্তর করতে পারেন ব্যাটারির দক্ষতা উন্নত করার সেরা উপায়গুলির মধ্যে একটি।

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

ডেটা প্রিফেচ করুন

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

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

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

এখানে একটি ব্যবহারিক উদাহরণ.

একজন সংবাদ পাঠক

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

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

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

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

অতিরিক্ত বিবেচনা

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

আপনি কতটা আক্রমনাত্মকভাবে ডেটা প্রিফেচ করবেন তা নির্ভর করে ডাউনলোড করা ডেটার আকার এবং এটি ব্যবহার করার সম্ভাবনার উপর। একটি মোটামুটি নির্দেশিকা হিসাবে, পূর্বে বর্ণিত স্টেট মেশিনের উপর ভিত্তি করে, বর্তমান ব্যবহারকারী সেশনের মধ্যে যে ডেটা ব্যবহার করার 50% সম্ভাবনা রয়েছে, আপনি সাধারণত সম্ভাব্য খরচের আগে প্রায় 6 সেকেন্ড (প্রায় 1-2 মেগাবাইট) জন্য প্রিফেচ করতে পারেন অব্যবহৃত ডেটা ডাউনলোড করা সেই ডেটা ডাউনলোড না করার সম্ভাব্য সঞ্চয়ের সাথে মেলে, শুরুতে।

সাধারণভাবে বলতে গেলে, ডেটা প্রিফেচ করার জন্য এটি একটি ভাল অভ্যাস যাতে আপনাকে প্রতি 2 থেকে 5 মিনিটে এবং 1 থেকে 5 মেগাবাইটের ক্রমে আরেকটি ডাউনলোড শুরু করতে হবে।

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

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

অনুরোধ করার আগে সংযোগ পরীক্ষা করুন

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

পুল সংযোগ

একটি অতিরিক্ত কৌশল যা ব্যাচিং এবং প্রিফেচিং ছাড়াও সাহায্য করতে পারে, তা হল আপনার অ্যাপের নেটওয়ার্ক সংযোগগুলি পুল করা৷

এটি নতুন চালু করার চেয়ে বিদ্যমান নেটওয়ার্ক সংযোগগুলি পুনরায় ব্যবহার করা সাধারণত বেশি দক্ষ। সংযোগগুলি পুনঃব্যবহার করা নেটওয়ার্ককে আরও বুদ্ধিমত্তার সাথে যানজট এবং সম্পর্কিত নেটওয়ার্ক ডেটা সমস্যাগুলিতে প্রতিক্রিয়া জানাতে দেয়।

HttpURLConnection এবং বেশিরভাগ HTTP ক্লায়েন্ট, যেমন OkHttp , ডিফল্টরূপে সংযোগ-পুলিং সক্ষম করে এবং একাধিক অনুরোধের জন্য একই সংযোগ পুনরায় ব্যবহার করে।

রিক্যাপ এবং সামনের দিকে তাকান

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

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

,

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

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

রেডিও স্টেট মেশিন

আপনার ব্যবহারকারীর ডিভাইসে থাকা ওয়্যারলেস রেডিওতে বিল্ট-ইন পাওয়ার-সেভিং বৈশিষ্ট্য রয়েছে যা এটি যে পরিমাণ ব্যাটারি শক্তি খরচ করে তা কমাতে সাহায্য করে৷ যখন সম্পূর্ণ সক্রিয় থাকে, বেতার রেডিও উল্লেখযোগ্য শক্তি খরচ করে, কিন্তু যখন নিষ্ক্রিয় বা স্ট্যান্ডবাই থাকে, তখন রেডিও খুব কম শক্তি খরচ করে।

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

একটি সাধারণ 3G নেটওয়ার্ক রেডিওর জন্য স্টেট মেশিনে তিনটি শক্তির অবস্থা থাকে:

  • সম্পূর্ণ শক্তি : যখন একটি সংযোগ সক্রিয় থাকে তখন ব্যবহৃত হয়, ডিভাইসটিকে তার সর্বোচ্চ সম্ভাব্য হারে ডেটা স্থানান্তর করতে দেয়।
  • কম শক্তি : একটি মধ্যবর্তী অবস্থা যা ব্যাটারি পাওয়ার খরচ প্রায় 50% কম করে।
  • স্ট্যান্ডবাই : ন্যূনতম বিদ্যুৎ-ব্যবহারকারী অবস্থা যেখানে কোনো নেটওয়ার্ক সংযোগ সক্রিয় থাকে না।

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

লেটেন্সি কমানোর জন্য, স্টেট মেশিন লোয়ার এনার্জি স্টেটে পরিবর্তন স্থগিত করতে বিলম্ব ব্যবহার করে। চিত্র 1 একটি সাধারণ 3G রেডিওর জন্য AT&T এর সময় ব্যবহার করে।


চিত্র 1. সাধারণ 3G বেতার রেডিও স্টেট মেশিন।

প্রতিটি ডিভাইসে রেডিও স্টেট মেশিন, বিশেষ করে সংশ্লিষ্ট ট্রানজিশন বিলম্ব ("টেইল টাইম") এবং স্টার্টআপ লেটেন্সি, নিয়োজিত বেতার রেডিও প্রযুক্তির (3G, LTE, 5G, এবং আরও) উপর ভিত্তি করে পরিবর্তিত হবে এবং এটি সংজ্ঞায়িত এবং কনফিগার করা হয়েছে ক্যারিয়ার নেটওয়ার্ক যার মাধ্যমে ডিভাইসটি কাজ করছে।

এই পৃষ্ঠাটি AT&T দ্বারা প্রদত্ত ডেটার উপর ভিত্তি করে একটি সাধারণ 3G ওয়্যারলেস রেডিওর জন্য একটি প্রতিনিধি রাষ্ট্রের মেশিন বর্ণনা করে। যাইহোক, সাধারণ নীতি এবং ফলস্বরূপ সর্বোত্তম অনুশীলন সমস্ত বেতার রেডিও বাস্তবায়নের জন্য প্রযোজ্য।

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

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

অ্যাপগুলি কীভাবে রেডিও স্টেট মেশিনকে প্রভাবিত করে

আপনি যখনই একটি নতুন নেটওয়ার্ক সংযোগ তৈরি করেন, তখন রেডিওটি সম্পূর্ণ পাওয়ার অবস্থায় রূপান্তরিত হয়। পূর্বে বর্ণিত সাধারণ 3G রেডিও স্টেট মেশিনের ক্ষেত্রে, এটি আপনার ট্রান্সফারের সময়কালের জন্য সম্পূর্ণ শক্তিতে থাকবে - এবং অতিরিক্ত 5 সেকেন্ড টেল টাইম-এর পরে কম শক্তির অবস্থায় 12 সেকেন্ড। তাই একটি সাধারণ 3G ডিভাইসের জন্য, প্রতিটি ডেটা স্থানান্তর সেশনের ফলে রেডিও কমপক্ষে 18 সেকেন্ডের জন্য শক্তি আঁকতে পারে।

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


চিত্র 2. প্রতি মিনিটে তিনবার চলমান এক-সেকেন্ডের স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার। চিত্রটি রানের মধ্যে "পাওয়ার আপ" লেটেন্সি বাদ দেয়।

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


চিত্র 3. প্রতি মিনিটে একবার চলমান তিনটি সেকেন্ড স্থানান্তরের জন্য আপেক্ষিক বেতার রেডিও পাওয়ার ব্যবহার।

অপ্টিমাইজেশান কৌশল

এখন যেহেতু আপনি বুঝতে পেরেছেন যে কীভাবে নেটওয়ার্ক অ্যাক্সেস ব্যাটারির আয়ুকে প্রভাবিত করে, আসুন কয়েকটি জিনিস সম্পর্কে কথা বলি যা আপনি ব্যাটারি নিষ্কাশন কমাতে সাহায্য করতে পারেন, পাশাপাশি একটি দ্রুত এবং তরল ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে পারেন৷

বান্ডিল ডেটা স্থানান্তর

পূর্ববর্তী বিভাগে যেমন বলা হয়েছে, আপনার ডেটা স্থানান্তরগুলিকে একত্রিত করা যাতে আপনি কম ঘন ঘন আরও ডেটা স্থানান্তর করতে পারেন ব্যাটারির দক্ষতা উন্নত করার সেরা উপায়গুলির মধ্যে একটি।

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

ডেটা প্রিফেচ করুন

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

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

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

এখানে একটি ব্যবহারিক উদাহরণ.

একজন সংবাদ পাঠক

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

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

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

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

অতিরিক্ত বিবেচনা

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

আপনি কতটা আক্রমনাত্মকভাবে ডেটা প্রিফেচ করবেন তা নির্ভর করে ডাউনলোড করা ডেটার আকার এবং এটি ব্যবহার করার সম্ভাবনার উপর। একটি মোটামুটি নির্দেশিকা হিসাবে, পূর্বে বর্ণিত স্টেট মেশিনের উপর ভিত্তি করে, বর্তমান ব্যবহারকারী সেশনের মধ্যে যে ডেটা ব্যবহার করার 50% সম্ভাবনা রয়েছে, আপনি সাধারণত সম্ভাব্য খরচের আগে প্রায় 6 সেকেন্ড (প্রায় 1-2 মেগাবাইট) জন্য প্রিফেচ করতে পারেন অব্যবহৃত ডেটা ডাউনলোড করা সেই ডেটা ডাউনলোড না করার সম্ভাব্য সঞ্চয়ের সাথে মেলে, শুরুতে।

সাধারণভাবে বলতে গেলে, ডেটা প্রিফেচ করার জন্য এটি একটি ভাল অভ্যাস যাতে আপনাকে প্রতি 2 থেকে 5 মিনিটে এবং 1 থেকে 5 মেগাবাইটের ক্রমে আরেকটি ডাউনলোড শুরু করতে হবে।

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

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

অনুরোধ করার আগে সংযোগ পরীক্ষা করুন

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

পুল সংযোগ

একটি অতিরিক্ত কৌশল যা ব্যাচিং এবং প্রিফেচিং ছাড়াও সাহায্য করতে পারে, তা হল আপনার অ্যাপের নেটওয়ার্ক সংযোগগুলি পুল করা৷

এটি নতুন চালু করার চেয়ে বিদ্যমান নেটওয়ার্ক সংযোগগুলি পুনরায় ব্যবহার করা সাধারণত বেশি দক্ষ। সংযোগগুলি পুনঃব্যবহার করা নেটওয়ার্ককে আরও বুদ্ধিমত্তার সাথে যানজট এবং সম্পর্কিত নেটওয়ার্ক ডেটা সমস্যাগুলিতে প্রতিক্রিয়া জানাতে দেয়।

HttpURLConnection এবং বেশিরভাগ HTTP ক্লায়েন্ট, যেমন OkHttp , ডিফল্টরূপে সংযোগ-পুলিং সক্ষম করে এবং একাধিক অনুরোধের জন্য একই সংযোগ পুনরায় ব্যবহার করে।

রিক্যাপ এবং সামনের দিকে তাকান

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

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

,

ডেটা স্থানান্তর করতে ওয়্যারলেস রেডিও ব্যবহার করা আপনার অ্যাপ্লিকেশনটির ব্যাটারি ড্রেনের অন্যতম উল্লেখযোগ্য উত্স। নেটওয়ার্ক ক্রিয়াকলাপের সাথে সম্পর্কিত ব্যাটারি ড্রেনকে হ্রাস করতে, আপনার সংযোগের মডেলটি অন্তর্নিহিত রেডিও হার্ডওয়্যারকে কীভাবে প্রভাবিত করবে তা আপনি বুঝতে পারেন।

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

রেডিও স্টেট মেশিন

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

একটি গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে যে রেডিও স্ট্যান্ডবাই থেকে তাত্ক্ষণিকভাবে সম্পূর্ণ সক্রিয় দিকে যেতে পারে না। রেডিও "পাওয়ার আপ" এর সাথে যুক্ত একটি বিলম্বের সময়কাল রয়েছে। সুতরাং উচ্চতর শক্তির রাজ্যগুলি থেকে নিম্ন শক্তি রাজ্যে ব্যাটারি স্থানান্তরগুলি ধীরে ধীরে বিদ্যুৎ সংরক্ষণের জন্য বিদ্যুৎ সংরক্ষণের জন্য আস্তে আস্তে শক্তি সংরক্ষণের জন্য রেডিওকে "পাওয়ারিং আপ" এর সাথে সম্পর্কিত বিলম্বকে হ্রাস করার চেষ্টা করে।

একটি সাধারণ 3 জি নেটওয়ার্ক রেডিওর জন্য রাজ্য মেশিনটি তিনটি শক্তি রাজ্য নিয়ে গঠিত:

  • সম্পূর্ণ শক্তি : যখন কোনও সংযোগ সক্রিয় থাকে তখন ব্যবহৃত হয়, ডিভাইসটিকে তার সর্বোচ্চ সম্ভাব্য হারে ডেটা স্থানান্তর করতে দেয়।
  • নিম্ন শক্তি : একটি মধ্যবর্তী রাষ্ট্র যা ব্যাটারি বিদ্যুতের খরচ প্রায় 50%হ্রাস করে।
  • স্ট্যান্ডবাই : ন্যূনতম শক্তি-গ্রহণযোগ্য অবস্থা যার সময় কোনও নেটওয়ার্ক সংযোগ সক্রিয় থাকে না।

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

বিলম্বকে হ্রাস করতে, রাজ্য মেশিনটি নিম্ন শক্তি রাজ্যে স্থানান্তর স্থগিত করতে বিলম্ব ব্যবহার করে। চিত্র 1 একটি সাধারণ 3 জি রেডিওর জন্য এটিএন্ডটি এর সময় ব্যবহার করে।


চিত্র 1. সাধারণ 3 জি ওয়্যারলেস রেডিও স্টেট মেশিন।

প্রতিটি ডিভাইসে রেডিও স্টেট মেশিন, বিশেষত সম্পর্কিত ট্রানজিশন বিলম্ব ("লেজ সময়") এবং স্টার্টআপ ল্যাটেন্সি, নিযুক্ত ওয়্যারলেস রেডিও প্রযুক্তির উপর ভিত্তি করে পৃথক হবে (3 জি, এলটিই, 5 জি, এবং আরও) এবং এটি দ্বারা সংজ্ঞায়িত এবং কনফিগার করা হয়েছে ক্যারিয়ার নেটওয়ার্ক যার উপরে ডিভাইসটি কাজ করছে।

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

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

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

অ্যাপগুলি কীভাবে রেডিও স্টেট মেশিনকে প্রভাবিত করে

প্রতিবার আপনি যখন একটি নতুন নেটওয়ার্ক সংযোগ তৈরি করেন, রেডিও সম্পূর্ণ পাওয়ার স্টেটে রূপান্তর করে। পূর্বে বর্ণিত সাধারণ 3 জি রেডিও স্টেট মেশিনের ক্ষেত্রে, এটি আপনার স্থানান্তরের সময়কালের জন্য সম্পূর্ণ ক্ষমতায় থাকবে - প্লাস অতিরিক্ত 5 সেকেন্ডের লেজের সময় - কম শক্তি অবস্থায় 12 সেকেন্ড দ্বারা অনুসরণ করা। সুতরাং একটি সাধারণ 3 জি ডিভাইসের জন্য, প্রতিটি ডেটা ট্রান্সফার সেশনের ফলে রেডিওটি কমপক্ষে 18 সেকেন্ডের জন্য শক্তি আঁকতে পারে।

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


চিত্র 2. প্রতি মিনিটে তিনবার চলমান এক সেকেন্ড ট্রান্সফারের জন্য আপেক্ষিক ওয়্যারলেস রেডিও পাওয়ার ব্যবহার। চিত্র রানের মধ্যে "পাওয়ার আপ" বিলম্বকে বাদ দেয়।

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


চিত্র 3. প্রতি মিনিটে একবার চলমান তিনটি দ্বিতীয় স্থানান্তরের জন্য আপেক্ষিক ওয়্যারলেস রেডিও পাওয়ার ব্যবহার।

অপ্টিমাইজেশান কৌশল

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

বান্ডিল ডেটা স্থানান্তর

পূর্ববর্তী বিভাগে যেমন বলা হয়েছে, আপনার ডেটা স্থানান্তরকে বান্ডিল করা যাতে আপনি প্রায়শই আরও বেশি ডেটা স্থানান্তর করছেন তা ব্যাটারির দক্ষতা উন্নত করার অন্যতম সেরা উপায়।

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

প্রিফেচ ডেটা

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

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

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

এখানে একটি ব্যবহারিক উদাহরণ।

একজন সংবাদ পাঠক

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

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

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

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

অতিরিক্ত বিবেচনা

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

আপনি কীভাবে আগ্রাসীভাবে ডেটা ডেটা ডাউনলোড করা হচ্ছে তার আকার এবং এটি ব্যবহারের সম্ভাবনা নির্ভর করে। পূর্বে বর্ণিত রাষ্ট্রীয় মেশিনের উপর ভিত্তি করে একটি রুক্ষ গাইড হিসাবে, বর্তমান ব্যবহারকারী সেশনের মধ্যে 50% ব্যবহারের সম্ভাবনা রয়েছে এমন ডেটার জন্য, আপনি সাধারণত প্রায় 6 সেকেন্ডের জন্য (প্রায় 1-2 মেগাবাইট) এর সম্ভাব্য ব্যয়ের আগে প্রিফেচ করতে পারেন অব্যবহৃত ডেটা ডাউনলোড করা সেই ডেটা ডাউনলোড না করার সম্ভাব্য সঞ্চয়গুলির সাথে মেলে।

সাধারণভাবে বলতে গেলে, ডেটা প্রিফেচ করা ভাল অনুশীলন যে আপনাকে কেবল প্রতি 2 থেকে 5 মিনিটে অন্য ডাউনলোড শুরু করতে হবে এবং 1 থেকে 5 মেগাবাইটের ক্রমে।

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

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

অনুরোধ করার আগে সংযোগ পরীক্ষা করুন

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

পুল সংযোগ

একটি অতিরিক্ত কৌশল যা ব্যাচিং এবং প্রিফেচিং ছাড়াও সহায়তা করতে পারে তা হ'ল আপনার অ্যাপ্লিকেশনটির নেটওয়ার্ক সংযোগগুলি পুল করা।

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

HttpURLConnection এবং বেশিরভাগ এইচটিটিপি ক্লায়েন্ট যেমন ওকেএইচটিটিপি , ডিফল্টরূপে সংযোগ-পুলিং সক্ষম করে এবং একাধিক অনুরোধের জন্য একই সংযোগটি পুনরায় ব্যবহার করে।

পুনরুদ্ধার এবং এগিয়ে খুঁজছেন

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

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