উত্তর:
এটি তাত্ক্ষণিকভাবে প্রস্থান করে বা যে ফাংশন থেকে ডাকা হয়েছিল তা সম্পূর্ণ করে?
যে পদ্ধতিটি ডেকেছে finish()
তা সম্পূর্ণরূপে চলবে। finish()
অপারেশন এমনকি শুরু হবে না যতক্ষণ না আপনি অ্যান্ড্রয়েড নিয়ন্ত্রণ ফিরে যান।
মত প্রতি জীবনচক্র ঘটনা onCreate
, onResume
, onPause
.... onDestroy
"মূল থ্রেড" - একটি কার্যকলাপের সবসময় একটি একক থ্রেডে বলা হয়।
সংক্ষেপে এই থ্রেডটি একটি ক্যু দ্বারা সমর্থনযুক্ত যেখানে সমস্ত ক্রিয়াকলাপ ইভেন্ট পোস্ট করা হচ্ছে। এই থ্রেডটি সন্নিবেশের ক্রমে এই সমস্ত ইভেন্টগুলি কার্যকর করতে পারে।
আপনি যদি finish()
জীবন চক্রের onCreate()
কোনও কলব্যাকের মতো কল করে থাকেন ... যেমন একটি "সমাপ্তি" বার্তা এই কাতারে যুক্ত হবে তবে থ্রেডটি "ফিনিস" ক্রিয়াটি বেছে নিতে এবং কার্যকর করতে পারবেন না যতক্ষণ না পদ্ধতিটি রিটার্ন সম্পাদন করে ততক্ষণ থ্রেড থেকে মুক্ত হয় না বর্তমান কাজ
ondestroy()
আপনার ক্রিয়াকলাপটি বিনষ্ট হওয়ার আগে আপনি চূড়ান্ত কলটি পান।
কার্যকলাপটি শেষ হয়ে যাওয়ার কারণে এটি ঘটতে পারে (কেউ এটিকে ডাকেন finish()
, বা কারণ স্থানটি সংরক্ষণের জন্য সিস্টেমটি ক্রিয়াকলাপের এই উদাহরণটি অস্থায়ীভাবে ধ্বংস করছে You আপনি isFinishing()
পদ্ধতিটির সাহায্যে এই দুটি পরিস্থিতিতে পার্থক্য করতে পারেন ।
যদি এ এবং বি দুটি ক্রিয়াকলাপ হয় এবং আপনার প্রবাহ এ> বি থেকে চলছে; এবং বি = একটি কল finish()
।
তারপর,
আপনি যে পদ্ধতি finish()
থেকে ফোন করেছেন তা মার্কের উল্লিখিত হিসাবে কার্যকর হবে। এবং কলব্যাকগুলির প্রবাহ অনুসরণ হিসাবে হবে -
onPause()
এর activity A
onRestart()
> onStart()
> onResume()
ভ্রমণ বি এরfinish()
করেন activity A
; শুধুমাত্র onStop()
এর Activity A
এখানে ডাকা হবে। এই ক্ষেত্রে, আমরা কোথা finish()
থেকে ফোন করেছি Activity A
; সুতরাং onStop()
এবং onDestroy()
উভয় জন্য বলা হবে activity A
।