অ্যান্ড্রয়েড: আরও ভাল কি - একাধিক ক্রিয়াকলাপ বা ম্যানুয়ালি দর্শনগুলি স্যুইচ করা?


115

আমি অ্যান্ড্রয়েডের জন্য কয়েকটি অ্যাপ্লিকেশন তৈরি করেছি এবং এই প্রশ্নগুলি সর্বদা স্থায়ী হয়:

আমার ইউআই কীভাবে গঠন করব? আমি কি ক্রিয়াকলাপের পরে ক্রিয়াকলাপটি চালু করব এবং "পিছনে" বোতামটি তৈরি করতে ফোনটি ছেড়ে যাব, বা নিজেকে বাস্তবায়িত করার জন্য আরও জটিল, তবে আরও জটিল, ম্যানুয়ালি স্যুইচিংয়ের সাথে উপায় এবং তারপরে ম্যানুয়ালি "পিছনে" বোতামটির কার্যকারিতাটি করা উচিত?

আপনি কি মনে করেন (বা জানেন) ভাল অনুশীলন?


4
নতুন পাঠকদের জন্য, দয়া করে নোট করুন যে এই প্রশ্নটি বেশ পুরানো, এবং আজ প্রশ্নটি "একাধিক ভিউ বা একাধিক ক্রিয়াকলাপ" না হয়ে "একাধিক অংশ বা একাধিক ক্রিয়াকলাপ" হওয়ার সম্ভাবনা বেশি। স্ট্যাকওভারফ্লো . com/a/10794086/199364 এ আপডেট করুন । এছাড়াও, টুকরো বনাম ক্রিয়াকলাপ সম্পর্কে অন্যান্য স্ট্যাকওভারফ্লো বিষয়ের জন্য গুগল - প্রচুর ভাল উত্তর।
টুলমেকারস্টেভ

উত্তর:


99

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

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

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


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

3
আমি আপনার সাথে একমত কিন্তু অনেক ভিজ্যুয়াল এফেক্ট কেবলমাত্র রূপান্তরগুলির মধ্যেই পাওয়া যায় এবং এমন ক্রিয়াকলাপগুলির মধ্যে নয় যা এরগো এবং চমৎকার কোডিংয়ের মধ্যে একটি উত্থিত সমস্যা চালায়
AsTeR

এটি একটি অত্যন্ত আকর্ষণীয় বিষয়। আমার এই মুহুর্তে একটি অ্যাপ রয়েছে যা শেষ পর্যন্ত 4 টি মতামত প্রয়োগ করবে implement আমি 1 টি ক্রিয়াকলাপের মধ্যে এটি সবই করছি যা এর উত্তরে "মেগা ক্রিয়াকলাপ" বলেছে। আমি আমার অ্যাপ্লিকেশনটিকে আইওএস সমকক্ষের মতো দেখতে একেবারে ঠিক দেখতে এবং বোধ করার জন্য এটি করছি am আমি সম্মত হই যে এটি হ'ল হ'ল আপনি যা সম্পাদন করতে চেষ্টা করছেন তার উপর নির্ভর করে। দুর্দান্ত প্রশ্ন, এবং উত্তর +1 :-)
ট্রিম্পলিক্স

আইওএস ইউআই করা একটি খারাপ ধারণা। একাধিক ক্রিয়াকলাপ ব্যবহার না করার একা Hvis এর ভুল কারণ।
স্লট

3
@ ড্যানিয়েল: আমি যখন বস্তুগুলি পাস করার দ্রুত পদ্ধতির দিকে চলে যাই, তখন ক্রিয়াকলাপগুলি চালু করার গতি প্রচুর পরিমাণে বৃদ্ধি পায়। আপনি কি দয়া করে এর জন্য কিছু অতিরিক্ত বিশদ বা রেফারেন্স উপাদান সরবরাহ করতে পারেন?
ভড়গব ঝভেরি

21

আমি কিছু উদাহরণগুলি উল্লেখ করতে চাই যখন কোনও একক ক্রিয়াকলাপ অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির জন্য আরও ভাল ডিজাইন হতে পারে যার একাধিক পূর্ণ পর্দা রয়েছে ভিউ:

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

  • আপনি যদি পর্দার মধ্যে কিছু সত্যিই দুর্দান্ত অ্যানিমেশন চান। হতে পারে আপনি পাখিটিকে একটি স্ক্রিনে নিয়ে অন্য স্ক্রিনে অবতরণ করতে চান। যখন প্রতিটি স্ক্রিন একটি ক্রিয়াকলাপ তখন তা করার চেষ্টা করুন!

অন্যদিকে যদি আপনার কোনও পর্দা অন্য কোনও অ্যাপ্লিকেশন দ্বারা প্রদর্শিত হতে ডিজাইন করা থাকে তবে সেই স্ক্রিনটি তার নিজস্ব ক্রিয়াকলাপ হওয়া উচিত।

মার্চ ২০১৪ আপডেট করুন:

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

আপডেট সেপ্টেম্বর 2018:

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


খণ্ডগুলি সম্পর্কে কথা বলতে আপডেট আপডেট করার জন্য আপনাকে ধন্যবাদ। সম্পূর্ণরূপে সম্মত হন যে আজকের গুরুত্বপূর্ণ পছন্দটি হ'ল ফ্রেগমেন্ট বনাম ক্রিয়াকলাপটি ব্যবহার করার সময়।
টুলমেকারস্টেভ

11

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


4

অন্যদের কাছ থেকে আমি উভয় মিশ্রণ ব্যবহার করে, উদাহরণস্বরূপ ভিন্ন,
1. একটা প্রধান মেনু যখন আবেদন শুরু হয়
, 2. আপনি অনুসন্ধানে ক্লিক কার্যকলাপের অনুসন্ধান প্রদর্শিত হয়
3. তারপর একটি ফিল্টার বোতাম, যা শুধু দৃশ্য এবং শো পরিবর্তন আছে আপনি ফিল্টার অপশন
৪. ফিল্টার ভিউ শেষে দুটি বোতাম রয়েছে, আপনি "অনুসন্ধান" বা "বাতিল করুন" টিপুন এবং আপনি আবার অনুসন্ধান ভিউতে ফিরে এসেছেন (ক্রিয়াকলাপটি স্যুইচ না করে)
Now. এখন যদি ব্যবহারকারী ফোনটি হিট করে বোতামটি সে অনুসন্ধান ফিল্টার বিকল্পগুলির পরিবর্তে মূল মেনুতে ফিরে গেছে। আমার ধারণা যা সঠিক আচরণ।

ব্যবহারকারী যেভাবে প্রাকৃতিক অনুভব করবেন তা এটি ব্যবহার করুন। এবং সবকিছুকে একটি ক্রিয়াকলাপে রাখাই জটিল করে তুলবে।


3

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

শুধুমাত্র আমার অভিমত.


1

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


3
স্ট্যাকওভারফ্লো এরিয়ারটি জাভাতে কেবল তখনই ঘটে যখন আপনার যদি অসীম পুনরাবৃত্তি হয়, তবে আপনি আউটআফমিউরিওরারের কথা ভাবছেন? জাভা প্রোগ্রামার হিসাবে আপনার কখনই বা কোথায় আবর্জনা সংগ্রহকারী ট্রিগার করা উচিত তা নিয়ে চিন্তা করা উচিত নয়।
satur9nine

2
অ্যান্ড্রয়েড স্ট্যাকওভারফ্লোতে যখন ভিউয়ের স্তরক্রমটিও খুব গভীর হয়।
ড্যানাইল

0

আমি একাধিক ক্রিয়াকলাপের লেআউটে এতগুলি সমস্যার মুখোমুখি হয়েছি যে এটির উত্থাপনের উপযুক্ত কারণ না থাকলে আমি দৃ strongly়ভাবে এটিকে নিরুৎসাহিত করি।

একাধিক কার্যক্রমের অসুবিধা Dis

একাধিক ক্রিয়াকলাপ ব্যবহার করে ক্রিয়াকলাপ থেকে ডেটা ফেরত দেওয়ার জন্য রিফ্যাক্টর কোড করা অনেক কঠিন।

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

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

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

বিকল্প

খণ্ডগুলি বা কেবল পরিচালনা করে নিজেকে ক্রিয়াকলাপ দেখে। ম্যানুয়ালি ভিউগুলি পরিচালনা করা, প্রয়োজনে ক্রিয়াকলাপ / টুকরাগুলির বিকল্প হিসাবে কিছু ভিউ-স্যুইচিং বিকল্প কোডিং প্রয়োজন desired

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

সম্ভবত প্রাসঙ্গিক: রেডডিট: এটি সরকারী: গুগল আনুষ্ঠানিকভাবে একক ক্রিয়াকলাপের অ্যাপ্লিকেশন আর্কিটেকচারের প্রস্তাব দেয়

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