ক্রিয়াকলাপ প্রসঙ্গে বা অ্যাপ্লিকেশন প্রসঙ্গে কখন ফোন করবেন?


265

এই দুটি প্রসঙ্গটি কী তা নিয়ে প্রচুর পোস্ট করা হয়েছে .. তবে আমি এখনও এটি ঠিকভাবে পাচ্ছি না getting

যতক্ষণ না আমি এ পর্যন্ত বুঝতে পেরেছি: প্রতিটি তার শ্রেণীর একটি উদাহরণ যার অর্থ কিছু প্রোগ্রামার আপনাকে this.getApplicationContext()যতবার সম্ভব কোনও মেমরি "ফাঁস" না করার জন্য ব্যবহার করার পরামর্শ দেয়। এর কারণ এটি হ'ল অন্যটি this( Activityউদাহরণের প্রসঙ্গটি পেয়ে ) Activityএমন একটিটিকে নির্দেশ করে যা প্রতিবার ব্যবহারকারী ফোনটি কাত করে দেয় বা অ্যাপ্লিকেশনটি রেখে দেয় .. ..

তবে যে কেউ দয়া করে এমন কিছু ভাল কোডিং উদাহরণ নিয়ে আসতে পারেন যেখানে এটি ব্যবহার করা সঠিক জিনিস হবে this(বর্তমান Activityউদাহরণটির প্রেক্ষাপটটি পাওয়া ) এবং অ্যাপ্লিকেশন প্রসঙ্গটি অকেজো / ভুল হবে?

উত্তর:


408

getApplicationContext()প্রায় সর্বদা ভুল। মিসেস হ্যাকোবার (অন্যদের মধ্যে) খুব স্পষ্টভাবে বলেছিলেন যে আপনি কেবলgetApplicationContext() তখনই ব্যবহার করবেন যখন আপনি জানেন যে আপনি কেন ব্যবহার করছেন getApplicationContext()এবং কেবল যখন আপনার ব্যবহারের প্রয়োজনgetApplicationContext()

ভোঁতা হতে, "কিছু প্রোগ্রামার" ব্যবহার করে getApplicationContext()(বা getBaseContext()কিছুটা কম) কারণ তাদের জাভা অভিজ্ঞতা সীমিত। তারা একটি ভেতরের বর্গ বাস্তবায়ন (যেমন, একটি OnClickListenerএকটি জন্য Buttonএকটি ইন Activity) এবং একটি প্রয়োজন ContextMyActivity.thisবাইরের ক্লাসে পেতে ব্যবহার করার পরিবর্তে this, তারা ব্যবহার করে getApplicationContext()বা getBaseContext()কোনও Contextবস্তু পেতে ।

আপনি কেবলgetApplicationContext() তখনই ব্যবহার করেন যখন আপনি জানেন যে আপনার কোনও প্রয়োজনের Contextজন্য আপনার প্রয়োজনের চেয়ে বেশি সময় বেঁচে থাকতে পারে Context। দৃশ্যের অন্তর্ভুক্ত:

  • আপনার getApplicationContext()যদি এমন কোনও কিছুর সাথে বাঁধা কিছু প্রয়োজন হয় যা ব্যবহার Contextকরে তার নিজস্ব বৈশ্বিক সুযোগ থাকবে। আমি স্টাটিকটি পরিষেবাটির জন্য ব্যবহৃত হওয়ার getApplicationContext()জন্য উদাহরণস্বরূপ ব্যবহার করি । যেহেতু এটি অচল, এবং এটি তৈরি করার জন্য আমার একটি দরকার , এটি ব্যবহার করা সবচেয়ে নিরাপদ ।WakefulIntentServiceWakeLockWakeLockContextPowerManagergetApplicationContext()

  • getApplicationContext()আপনি যখন কোনও Serviceথেকে বাঁধেন তখন ব্যবহার করুন Activity, যদি আপনি উদাহরণগুলির ServiceConnectionমধ্যে (অর্থাত্, বাঁধাইয়ের হ্যান্ডেলটি) পাস করতে চান তবে ব্যবহার Activityকরুন onRetainNonConfigurationInstance()। অ্যান্ড্রয়েড অভ্যন্তরীণভাবে এর মাধ্যমে বাইন্ডিংগুলি ট্র্যাক করে ServiceConnectionsএবং Contextsবাইন্ডিংগুলি তৈরি করে তার রেফারেন্স রাখে । আপনার কাছ থেকে বাঁধে তাহলে Activity, তারপরে নতুন Activityদৃষ্টান্ত একটি রেফারেন্স থাকবে ServiceConnectionযা পুরাতন একটি অন্তর্নিহিত সংশয়ের অবকাশ নেই Activity, এবং পুরানো Activityকরতে পারবেন আবর্জনা সংগ্রহ করা।

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

আপনি যেখানেই যান কেন ব্যবহার না করার কারণ এখানে রয়েছে getApplicationContext():

  • এটি একটি সম্পূর্ণ নয় Context, যা কিছু করে Activityতা সমর্থন করে। আপনি যা করতে চেষ্টা করবেন এমন বিভিন্ন জিনিস Contextব্যর্থ হবে, বেশিরভাগই জিইউআই সম্পর্কিত

  • এটা মেমরি তথ্য ফাঁসের তৈরি করতে পারেন যদি Contextথেকে getApplicationContext()এটি আপনার কল দ্বারা নির্মিত কিছু সম্মুখের দিকে ঝুলিতে যে আপনি পরিষ্কার আপ না। একটি দিয়ে Activity, এটি কোনও কিছুতে ধরে রাখলে, একবার Activityময়লা আবর্জনা সংগ্রহ হয়ে গেলে , সমস্ত কিছু খুব দ্রুত ফুরিয়ে যায়। Applicationঅবজেক্ট আপনার প্রক্রিয়ার সারা জীবনের জন্য রয়ে যায়।


1
এই উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। এই উত্তরটি পড়ার আগে আমি আর একটি লিঙ্ক পেয়েছি যা কিছু লোককে সাহায্য করতে পারে। stackoverflow.com/questions/7298731/… - এই লিঙ্কটি মেমরি ফাঁস সম্পর্কে আমার উদ্বেগগুলি ব্যাখ্যা করে।
নরফেল্ড

27
@ নরফেল্ট: এফওয়াইআই, আপনার মন্তব্যের লিঙ্কটি এই উত্তরের পিছনে রয়েছে।
কমন্সওয়্যার

2
তোমাকে ধন্যবাদ .. এই লিঙ্কে ছিল: stackoverflow.com/questions/5796611/... এটা মেমরি লিক যে আমি এই ব্যবহার করে পাবার ভয় ছিল বর্ণনা
Norfeldt

6
@ জাজাকিল: আপনার উক্তিটির পরবর্তী অংশটি প্রায় সত্য। এটি আরও ভালভাবে বর্ণিত হয় যে "কোনও কার্যকলাপের প্রসঙ্গটি এমন কোনও বিষয়কে দেবেন না যা ক্রিয়াকলাপের চেয়ে দীর্ঘস্থায়ী হবে, যেমন স্থির ডেটা সদস্য"। তবে, আপনি এখনও কেবল getApplicationContext()তখনই ব্যবহার করেন যখন আপনি নির্দিষ্ট পরিস্থিতিতে কেন এটি প্রয়োজন তা সুনির্দিষ্টভাবে জানেন । একটি লেআউট inflating? ক্রিয়াকলাপটি ব্যবহার করুন। কোনও পরিষেবাতে বাধ্য, যেখানে আপনার কনফিগারেশন পরিবর্তনের জন্য সেই বাঁধাই দরকার? ব্যবহার করুন getApplicationContext(), তাই Activityউদাহরণস্বরূপ বাঁধাই বাঁধা না ।
কমনসওয়ার

7
@ সেভার: আমি আমার উত্তরে এটি কভার করছি। ডেভ স্মিথের প্রাসঙ্গিক বিষয়গুলি কভার করার জন্য একটি দুর্দান্ত ব্লগ পোস্ট রয়েছে: ডাবলেনকোর.কম / ২০১৩ / 3 / কনটেক্সট তার সংক্ষিপ্ত অনুচ্ছেদ: "বেশিরভাগ ক্ষেত্রে, আপনি যে ঘেরের মধ্যে কাজ করছেন সেগুলি থেকে সরাসরি আপনার জন্য উপলভ্য প্রসঙ্গটি ব্যবহার করুন safely আপনি নিরাপদে ধরে রাখতে পারবেন যতক্ষণ এই রেফারেন্সটি সেই উপাদানটির আজীবন প্রসারণ না করে ততক্ষণ আপনার রেফারেন্সটি আপনার ক্রিয়াকলাপ বা পরিষেবা অতিক্রম করে এমন কোনও অবজেক্টের থেকে কোনও প্রসঙ্গ সংরক্ষণ করার দরকার পড়ার সাথে সাথে অস্থায়ীভাবেও আপনার সংরক্ষণ করা রেফারেন্সটি স্যুইচ করুন switch অ্যাপ্লিকেশন প্রসঙ্গে। "
কমন্সওয়েয়ার

48

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

এখানে ভাবনা এবং পর্যালোচনা করার জন্য আরও কিছু রয়েছে:

টোস্ট বার্তার জন্য, গুগল দেব গাইড অ্যাপ্লিকেশন প্রসঙ্গটি ব্যবহার করে এবং স্পষ্টভাবে এটি ব্যবহার করতে বলুন: টোস্ট বিজ্ঞপ্তি

দেব গাইডের ডায়লগ বিভাগে আপনি দেখতে পাচ্ছেন যে একটি সতর্কতা ডায়ালগ.বিল্ডার অ্যাপ্লিকেশন প্রসঙ্গটি ব্যবহার করে এবং তারপরে অগ্রগতি বারটি একটি ক্রিয়াকলাপ প্রসঙ্গে ব্যবহার করে। গুগলের দ্বারা এটি ব্যাখ্যা করা হয়নি। ডায়ালগ

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

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


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

38

আমি যখন এই টেবিলটি বিভিন্ন ধরণের প্রসঙ্গ যেমন অ্যাপ্লিকেশন প্রসঙ্গ (যেমন getApplicationContext():) এবং ক্রিয়াকলাপের প্রসঙ্গ এবং ব্রডকাস্টআরসিভার প্রসঙ্গে ব্যবহার করতে পারি তার জন্য একটি গাইডেন্স হিসাবে ব্যবহার করেছি :

এখানে চিত্র বর্ণনা লিখুন

সমস্ত যোগ্যতা আরও তথ্যের জন্য এখানে মূল লেখকের কাছে যায়।


11

কোন প্রসঙ্গে ব্যবহার করতে হবে?

প্রসঙ্গে দুটি প্রকার রয়েছে:

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

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

আসুন কয়েকটি ক্ষেত্রে বিবেচনা করা যাক:

  • MainActivity.this মেইনএকটিভিটি প্রসঙ্গে বোঝায় যা ক্রিয়াকলাপ শ্রেণি প্রসারিত করে তবে বেস শ্রেণি (ক্রিয়াকলাপ) প্রসঙ্গ শ্রেণিটিও প্রসারিত করে, তাই এটি ক্রিয়াকলাপের প্রসঙ্গটি সরবরাহ করতে ব্যবহার করা যেতে পারে।

  • getBaseContext() ক্রিয়াকলাপের প্রসঙ্গ সরবরাহ করে।

  • getApplication() অ্যাপ্লিকেশন প্রসঙ্গে প্রস্তাব।

  • getApplicationContext() এছাড়াও আবেদন প্রসঙ্গে উপলব্ধ।

আরও তথ্যের জন্য দয়া করে এই লিঙ্কটি চেক করুন


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

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

6

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

খুঁজে পেয়েছেন যে কিছু অ্যান্ড্রয়েড সংস্করণ / ডিভাইস সংমিশ্রণে এই সমস্যাগুলি রয়েছে যা এই নিয়মগুলি অনুসরণ করে না। উদাহরণস্বরূপ, যদি আমার কাছে একটি ব্রডকাস্টারসিভার থাকে যা একটি প্রসঙ্গ পাস হয় এবং আমি সেই প্রসঙ্গে অ্যাপ্লিকেশন কনটেক্সটে রূপান্তর করি এবং তারপরে অ্যাপ্লিকেশন প্রসঙ্গে রেজিস্টার () কল করার চেষ্টা করি তবে অনেকগুলি উদাহরণ রয়েছে যেখানে এটি ভাল কাজ করে, তবে আমি যেখানে পাই সেখানেও অনেকগুলি উদাহরণ রয়েছে get একটি রিসিভারক্যালনটলিউডএক্সেপশনের কারণে ক্র্যাশ। এই ক্রাশগুলি এপিআই 15 থেকে 22 অবধি অ্যান্ড্রয়েড সংস্করণে বিস্তৃত হয় htt https://possiblemobile.com/2013/06/context/#comment-2443283153

কারণ এটির নিশ্চয়তা নেই যে নীচের সারণিতে অ্যাপ্লিকেশন প্রসঙ্গে সমর্থিত হিসাবে বর্ণনা করা সমস্ত ক্রিয়াকলাপ সমস্ত অ্যান্ড্রয়েড ডিভাইসে কাজ করবে! এখানে চিত্র বর্ণনা লিখুন


4

যখন আপনার ক্রিয়াকলাপ প্রসঙ্গে বনাম ব্যবহার করা উচিত তার দুটি দুর্দান্ত উদাহরণ হ'ল অ্যাপ্লিকেশন প্রসঙ্গটি কোনও টোস্ট বার্তা বা অন্তর্নির্মিত ডায়ালগ বার্তাটি অ্যাপ্লিকেশন প্রসঙ্গটি ব্যবহার করার সময় প্রদর্শন করার ক্ষেত্রে ব্যতিক্রম ঘটবে:

ProgressDialog.show(this, ....);

অথবা

Toast t = Toast.makeText(this,....);

এই উভয়টিরই ক্রিয়াকলাপ প্রসঙ্গ থেকে তথ্য প্রয়োজন যা অ্যাপ্লিকেশন প্রসঙ্গে সরবরাহ করা হয়নি।


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

1
@ চিনির নাম, হ্যাঁ এটি কার্যকর হতে পারে তবে সেই অ্যাপের ভবিষ্যতে কিছুটা সময় এটি ক্র্যাশও হয়ে যাবে several
ওজনুগা জুড ওচালিফু

1
আমি যখন টোস্টে ক্রিয়াকলাপের প্রসঙ্গটি ব্যবহার করি তখন এটি মেমরি ফাঁস করে দেয়!
জেমশিত ইস্কেন্দ্রভ

3

অ্যাপ্লিকেশন প্রসঙ্গ লাইভ অবধি আপনার অ্যাপ্লিকেশনটি কেবল জীবিত এবং এটি ক্রিয়াকলাপের জীবনচক্রের উপর নির্ভর করে না তবে প্রসঙ্গটি দীর্ঘস্থায়ী অবজেক্ট রাখে । আপনি যে জিনিসটি অস্থায়ীভাবে ব্যবহার করছেন তা যদি সেই সময়ের জন্য অ্যাপ্লিকেশন প্রসঙ্গে এবং ক্রিয়াকলাপ প্রসঙ্গে অ্যাপ্লিকেশন প্রসঙ্গে সম্পূর্ণরূপে ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.