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

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

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

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

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

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

একটি সাধারণ 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 , ডিফল্টরূপে সংযোগ-পুলিং সক্ষম করে এবং একাধিক অনুরোধের জন্য একই সংযোগ পুনরায় ব্যবহার করে।

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

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

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