অ্যান্ড্রয়েড সিঙ্গলটাস্ক বা সিঙ্গলআইন্সট্যান্স লঞ্চ মোড? [বন্ধ]


84

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

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

একক টাস্ক এবং সিনগেলআইন্সট্যান্স লঞ্চ মোড উভয়ই যা করতে চাইছে তা মনে হচ্ছে তাই আমি নিশ্চিত না যে এই উদ্দেশ্যে আমি কোনটি ব্যবহার করব এবং কেন?

উত্তর:


141

থেকে অ্যাপ্লিকেশন প্রাথমিক ধারনা অ্যান্ড্রয়েড দেব গাইডের পৃষ্ঠা:

ডিফল্টরূপে, একটি অ্যাপ্লিকেশনটিতে থাকা সমস্ত ক্রিয়াকলাপের একে অপরের প্রতি সখ্যতা থাকে - এটি হ'ল তাদের সকলের একই কাজের সাথে সম্পর্কিত থাকার জন্য একটি পছন্দ আছে।

একটি "সিঙ্গলআইনস্ট্যান্স" ক্রিয়াকলাপ তার কাজের একমাত্র ক্রিয়াকলাপ হিসাবে একা দাঁড়িয়ে। যদি এটি অন্য ক্রিয়াকলাপ শুরু করে, তবে লঞ্চ মোড নির্বিশেষে সেই ক্রিয়াকলাপটি অন্য কোনও কার্যে চালু করা হবে - যেন FLAG_ACTIVITY_NEW_TASK এর উদ্দেশ্য ছিল। অন্যান্য সমস্ত ক্ষেত্রে, "সিঙ্গলইনস্ট্যান্স" মোডটি "সিঙ্গলটাস্ক" এর মতো।

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

4 একটি কার্যে ক্রিয়াকলাপ

যেহেতু লঞ্চ মোডের সাথে ক্রিয়াকলাপের একাধিক উদাহরণ কখনই না থাকে, পিছনে বোতামটি আপনাকে সর্বদা আপনার ক্ষেত্রে ক্রিয়াকলাপের বিদ্যমান উদাহরণে নিয়ে যায়।

একটি গুরুত্বপূর্ণ পার্থক্য হ'ল "সিঙ্গেল টাস্ক" যখন নতুন কিছু ক্রিয়াকলাপ চালু করা হয় তখন চালু করা নতুন ক্রিয়াকলাপগুলির জন্য একটি নতুন টাস্ক তৈরির প্রয়োজন হয় না। বা প্রতিটি বারের পিছনে বোতামের নতুন কার্যটি সরাতে হবে না।

যেহেতু আপনার ক্রিয়াকলাপের স্ট্যাকটি সমস্ত একটি ব্যবহারকারীর "টাস্ক" এর সাথে সম্পর্কিত, এবং এটি আপনার মতো জটিল ইন্টেন্ট কাঠামো মতো মনে হচ্ছে না যেখানে একক ইনস্ট্যান্স সর্বদা তাদের পরিচালনা করতে সুবিধাজনক হতে পারে, তাই আমি সিঙ্গেল টাস্ক লঞ্চ মোডটি ব্যবহার করার পরামর্শ দেব।

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


4
ধন্যবাদ! দেখতে পঠনের মতো দেখতে ... আইভির বিষয়টি বুঝতে পেরেছি যে আমি আসলে কোনও ক্রিয়াকলাপের একাধিক উদাহরণ চাই এবং অগ্রভাগের ক্রিয়াকলাপটি অনুসন্ধান কার্যকলাপ এবং কেবল তখনই অন্য কোন অনুসন্ধান সম্পাদন করা উচিত যখন এটি বিদ্যমান ক্রিয়াকলাপটি ব্যবহার করবে (যেমন বাজারটি কীভাবে কাজ করে) এবং তার জন্য সিঙ্গটপ হ'ল ঠিক তার পরে তবে যাইহোক সাহায্যের জন্য ধন্যবাদ =) ধন্যবাদ
কমমান

4
হেই ধন্যবাদ. এই লিখিত পোস্টটি আমাকে চিমটি থেকে সহায়তা করেছে।
আইসক্রিমম্যান

বিশদগুলির জন্য ধন্যবাদ, বিশেষত এটির (উদ্দেশ্যটি বাদ দেওয়া সত্ত্বেও, এটির আগমনের ফলে কার্যটি অগ্রভাগে এসে পৌঁছেছিল, যেখানে এটি থাকবে remain) , যা তাত্ক্ষণিকভাবে আমার বিভ্রান্তি পরিষ্কার করে দেয়। আমি কেবল তখনই ভাবছিলাম যে যদি কোনও সিঙ্গল টাস্ক ক্রিয়াকলাপ স্ট্যাকের শীর্ষে না থাকে তবে আমি এখনও নির্দিষ্ট করে না দিয়ে এটিতে নেভিগেট করতে চাই FLAG_ACTIVITY_CLEAR_TOP
nevevek


30

একটি সহজ উপায়ে-

একক টাস্ক:

সিস্টেমটি একটি নতুন টাস্ক তৈরি করে এবং নতুন কার্যের মূলে ক্রিয়াকলাপটি তাত্ক্ষণিক করে তোলে। যাইহোক, যদি ক্রিয়াকলাপের কোনও উদাহরণ ইতিমধ্যে একটি পৃথক কার্যক্রমে উপস্থিত থাকে তবে সিস্টেমটি onNewIntent()নতুন উদাহরণ তৈরি না করে তার পদ্ধতিতে একটি কলের মাধ্যমে বিদ্যমান দৃষ্টান্তের উদ্দেশ্যে অভিপ্রায়টি প্রবর্তন করে। শুধুমাত্র one instanceকার্যকলাপের এক সময় উপস্থিত থাকতে পারে exist

দ্রষ্টব্য: ক্রিয়াকলাপটি কোনও নতুন কার্যক্রমে শুরু হওয়া সত্ত্বেও, পিছনের বোতামটি ব্যবহারকারীকে আগের ক্রিয়াকলাপে ফিরিয়ে দেয়।

এককক্ষেত্র-

যেমনটি হ'ল"singleTask" সিস্টেমটি অন্য কোনও ক্রিয়াকলাপটিকে উদাহরণস্বরূপ টাস্কটিতে চালিত করে না । ক্রিয়াকলাপটি সর্বদা তার কার্যের একক এবং একমাত্র সদস্য; এটির দ্বারা শুরু করা কোনও কার্যক্রম পৃথক কার্যক্রমে খোলা হয়


4

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


4
শেষ বাক্যটি সিঙ্গেলআইস্ট্যান্সের জন্য সত্য, একক টাস্ক নয়
সর্দার সমানকোওলু

@ সেরদারস। আপনার মন্তব্য প্রশংসা। সম্পর্কে আরও যোগ করা singleTask- সিস্টেমটি একটি নতুন টাস্ক তৈরি করে এবং নতুন কার্যের মূলে ক্রিয়াকলাপটি তাত্ক্ষণিক করে তোলে। যাইহোক, যদি ক্রিয়াকলাপের কোনও উদাহরণ ইতিমধ্যে একটি পৃথক কার্যক্রমে উপস্থিত থাকে তবে সিস্টেমটি onNewIntent()নতুন উদাহরণ তৈরি না করে তার পদ্ধতিতে একটি কলের মাধ্যমে বিদ্যমান দৃষ্টান্তের উদ্দেশ্যে অভিপ্রায়টি প্রবর্তন করে। ক্রিয়াকলাপের কেবলমাত্র একটি উদাহরণ একসাথে উপস্থিত থাকতে পারে। আরও বিকাশকারী.অ্যান্ড্রয়েড.কমের জন্য
রূপেশ যাদব 15'18

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