কোনও অ্যাপ্লিকেশন বন্ধ করা কি ভ্রান্ত?


1150

অ্যান্ড্রয়েড শেখার আমার প্রয়াসে এগিয়ে চলেছি, আমি কেবল নিম্নলিখিতটি পড়ছি :

প্রশ্ন: আমরা যদি অ্যাপ্লিকেশনটিকে হত্যা করার জন্য মেনু অপশন না রাখি তবে ব্যবহারকারীর কি অ্যাপ্লিকেশনটি মেরে ফেলার বিকল্প রয়েছে? যদি এই জাতীয় কোনও বিকল্প বিদ্যমান না থাকে তবে ব্যবহারকারী কীভাবে অ্যাপ্লিকেশনটি সমাপ্ত করবেন?

উত্তর: (রোমেন গাই): ব্যবহারকারী তা করেন না, সিস্টেম এটি স্বয়ংক্রিয়ভাবে পরিচালনা করে। ক্রিয়াকলাপটি জীবনচক্র (বিশেষত অনপজ / অনস্টপ / অনডেস্ট্রয়) এর জন্য। আপনি যা-ই করেন না কেন, "প্রস্থান" বা "প্রস্থান" অ্যাপ্লিকেশন বোতামটি রাখবেন না। এটি অ্যান্ড্রয়েডের অ্যাপ্লিকেশন মডেলের সাথে অকেজো। এটি কোর অ্যাপ্লিকেশনগুলি কীভাবে কাজ করে তার বিপরীত।

হেই, অ্যান্ড্রয়েড জগতে আমি যে পদক্ষেপ নিয়েছি তার জন্য আমি একরকম সমস্যা নিয়ে চলেছি = ()

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

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

আমি প্রকৃতপক্ষে অ্যান্ড্রয়েড প্ল্যাটফর্মের জন্য বিকাশের অপেক্ষায় ছিলাম, যেহেতু এটি উইন্ডোজ মোবাইল এবং .NET- এ বিদ্যমান অনেকগুলি সমস্যার সমাধান করে। যাইহোক, গত সপ্তাহটি আমার জন্য কিছুটা টার্নঅফ হয়ে গেছে ... আমি আশা করি অ্যান্ড্রয়েড ত্যাগ করতে হবে না তবে এখনই এটি খুব ভাল দেখাচ্ছে না = ((

আমার জন্য কী সত্যিই অ্যাপ্লিকেশনটি ছেড়ে দেওয়ার কোনও উপায় আছে ?

উত্তর:


1285

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

মুল বক্তব্যটি হ'ল আমি কখন আমার অ্যাপ্লিকেশনটি শেষ হতে চলেছে তা Android এর জন্য নির্ধারণ করার অনুমতি দিতে পারি না। এটি অবশ্যই ব্যবহারকারীর পছন্দ হতে হবে।

কয়েক মিলিয়ন মানুষ সেই মডেলটিতে পুরোপুরি খুশি যেখানে পরিবেশ প্রয়োজনীয়তার সাথে অ্যাপ্লিকেশনটি বন্ধ করে দেয়। এই ব্যবহারকারীরা কেবল অ্যান্ড্রয়েড অ্যাপটিকে "সমাপ্তি" সম্পর্কে ভাবেন না, তারা কোনও ওয়েব পৃষ্ঠা "সমাপ্তি" বা থার্মোস্টেটের "সমাপ্তি" সম্পর্কে ভাবেন না।

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

যেমন আমি আগেই বলেছি, আমার অ্যাপে প্রচুর জিনিস চলছে (ডেটা ডিভাইসে ঠেলাঠেলি করা হচ্ছে, সবসময় সেখানে থাকা উচিত এমন কাজের সাথে তালিকাগুলি ইত্যাদি)।

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

আমাদের ব্যবহারকারীরা লগ ইন করে এবং তা করা যায় না প্রতিবার যখন তারা একটি ফোন কল আসে এবং অ্যান্ড্রয়েড অ্যাপটিকে হত্যা করার সিদ্ধান্ত নেয়।

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

উদাহরণস্বরূপ, অ্যাপ্লিকেশনটি থেকে বেরিয়ে যাওয়ার সময় আমরা আপডেটগুলি পরীক্ষা করতে চাই

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

কিছু মন্তব্য সুপারিশ করে যে পিছনের বোতামটি আঘাত করলে অ্যাপটি মোটেও মারা যায় না (উপরে আমার প্রশ্নের লিঙ্কটি দেখুন)।

ব্যাক বোতাম টিপলে "অ্যাপটি মেরে ফেলা যায় না"। এটি ব্যবহারকারী যখন ব্যাকটি বোতাম টিপত তখন অন স্ক্রিনে থাকা কার্যকলাপটি শেষ করে।

এটি কেবল তখনই শেষ করা উচিত যখন ব্যবহারকারীরা এটি সমাপ্ত করতে চায় - কখনও কখনও অন্য কোনও উপায়ে নয়। যদি আপনি অ্যান্ড্রয়েডে এর মতো আচরণ করে এমন অ্যাপ্লিকেশনগুলি লিখতে না পারেন তবে আমি মনে করি যে অ্যান্ড্রয়েড বাস্তব অ্যাপ্লিকেশন লেখার জন্য ব্যবহার করা যাবে না = ()

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

আমার জন্য কী সত্যিই অ্যাপ্লিকেশনটি ছেড়ে দেওয়ার কোনও উপায় আছে?

অন্য সবাই আপনাকে বলেছে, ব্যবহারকারীরা (BACK এর মাধ্যমে) বা আপনার কোড (মাধ্যমে finish()) আপনার বর্তমানে চলমান কার্যকলাপ বন্ধ করতে পারে close ব্যবহারকারীদের সাধারণত আর কিছুই প্রয়োজন হয় না, সঠিকভাবে লিখিত অ্যাপ্লিকেশনগুলির জন্য, ওয়েব অ্যাপ্লিকেশনগুলি ব্যবহারের জন্য তাদের "প্রস্থান" বিকল্পের চেয়ে বেশি কিছু দরকার নেই।


সংজ্ঞা অনুসারে কোনও দুটি অ্যাপ্লিকেশন পরিবেশ একই নয়। এর অর্থ এই যে আপনি নতুন পরিবেশিত হওয়ার সাথে সাথে অন্যরা কবর দেবার সাথে সাথে পরিবেশের প্রবণতা দেখতে পাচ্ছেন।

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

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

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

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

সুতরাং, আপনি যখন লিখুন:

আমি আবিষ্কার করেছি এমন অন্যান্য অগোছালো জিনিসগুলির সাথে আমিও মনে করি যে অ্যান্ড্রয়েডের জন্য আমাদের অ্যাপ্লিকেশন বিকাশ ঘটবে না।

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


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

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

25
@ সোমকলমটাইম: না, এটি ব্যবহারের জন্য বৈধ কারণ নয় killProcess()। আরও ভাল আইওএস কোড লেখার এটি একটি বৈধ কারণ।
কমন্সওয়্যার

24
@ কমন্সওয়্যার: দুঃখিত, তবে এটি একটি ট্রাইটি উত্তর যা আমার কোনও উপকারে আসে না। আমি পোর্ট করছি যে আমি বন্দরে প্রদান করেছি। বন্দরের কাজ করার জন্য, তাদের কোডটি পুনরায় লেখার জন্য, বা আমার নিয়োগকর্তার জন্য ব্যয় হ্রাস করে এমনভাবে কী করা উচিত, যাতে তারা অ্যান্ড্রয়েডে আরও গেমস রাখার অনুমতি দেয়? এটি যাইহোক পুরোপুরি একাডেমিক প্রশ্ন: তারা iOS চায় না যে আমি তাদের ইঞ্জিনে এত বড় পরিবর্তন আনব, যেহেতু আমি আইওএসের পরিবর্তনগুলি পরীক্ষা করতে পারি না। এবং এটি কেবল ভুল: উপযুক্ত সামগ্রীর জন্য সিঙ্গলটন নিদর্শনগুলি ব্যবহার করার বিষয়ে "খারাপ" কিছুই নেই। অ্যান্ড্রয়েড সবেমাত্র ডাব্লুআরটি এনডিকে অ্যাপ্লিকেশনগুলি ভাঙ্গা।
সোমকলমটাইম

10
@ আরও নির্ভরযোগ্য পুনর্নির্মাণের জন্য তৈরি, সম্ভবত আপনি ক্রিয়াকলাপ বা পরিষেবাটিতে স্টোরের পরিমাণ কমিয়ে আনতে পারেন। পরিবর্তে, প্রতিবার ক্রিয়াকলাপ বা পরিষেবা শুরু হওয়ার সাথে সাথে "স্ক্র্যাচ থেকে" পুনরায় তৈরি করা একটি পৃথক শ্রেণিতে বেশিরভাগ রাজ্য এবং কোড রাখুন।
কিওয়ার্টি

289

আমি এই থ্রেডের ভবিষ্যতের পাঠকদের জন্য এখানে একটি সংশোধন যুক্ত করতে চাই। এই নির্দিষ্ট উপদ্রবটি দীর্ঘদিন ধরে আমার বোঝার হাত থেকে রক্ষা পেয়েছে তাই আমি নিশ্চিত হতে চাই যে আপনারা কেউই একই ভুল না করে:

System.exit()স্ট্যাকের একাধিক ক্রিয়াকলাপ থাকলে আপনার অ্যাপ্লিকেশনটিকে হত্যা করবে না not আসলে যা ঘটে তা হ'ল প্রক্রিয়াটি মেরে ফেলা হয় এবং সাথে সাথে স্ট্যাকের একটি কম ক্রিয়াকলাপ দিয়ে পুনরায় শুরু করা হয়। আপনার অ্যাপটি ফোর্স ক্লোজ ডায়ালগ দ্বারা হত্যা করা হয় এমনকী, বা আপনি ডিডিএমএস থেকে প্রক্রিয়াটি মারতে চেষ্টা করার পরেও এটি ঘটে। এটি একটি বাস্তবতা যা সম্পূর্ণ জ্ঞাতীত, আমার জ্ঞানের কাছে।

সংক্ষিপ্ত উত্তরটি হ'ল, আপনি যদি নিজের অ্যাপ্লিকেশনটি থেকে বেরিয়ে আসতে চান, finish()ব্যবহারকারী যখন প্রস্থান করতে চান তখন আপনাকে আপনার স্ট্যাকের সমস্ত ক্রিয়াকলাপ এবং সেগুলির সমস্তগুলি ট্র্যাক করে রাখতে হবে (এবং না, ক্রিয়াকলাপের স্ট্যাকের মাধ্যমে পুনরাবৃত্তি করার কোনও উপায় নেই) , সুতরাং আপনাকে নিজেরাই এই সমস্ত পরিচালনা করতে হবে)। এমনকি এটি প্রকৃতপক্ষে প্রক্রিয়াটি বা আপনার কাছে থাকা কোনও ঝুঁকির উল্লেখগুলিকে হত্যা করে না। এটি কেবল ক্রিয়াকলাপ সমাপ্ত করে। এছাড়াও, আমি নিশ্চিত না Process.killProcess(Process.myPid())যে আরও ভাল কাজ করে কিনা ; আমি এটি পরীক্ষা করিনি।

অন্যদিকে, যদি আপনার স্ট্যাকের মধ্যে থাকা কার্যক্রমগুলি রাখা আপনার পক্ষে ঠিক আছে, তবে এমন আরও একটি পদ্ধতি রয়েছে যা আপনার পক্ষে জিনিসগুলিকে অত্যন্ত সহজ করে Activity.moveTaskToBack(true)তুলেছে : কেবল আপনার প্রক্রিয়াটিকে ব্যাকগ্রাউন্ড করবে এবং হোম স্ক্রিনটি দেখিয়ে দেবে।

দীর্ঘ উত্তরের সাথে এই আচরণের পিছনে দর্শনের ব্যাখ্যা জড়িত। অনেকগুলি অনুমানের দ্বারা দর্শন জন্মগ্রহণ করে:

  1. প্রথমত, এটি কেবল তখনই ঘটে যখন আপনার অ্যাপ্লিকেশনটি অগ্রভাগে থাকবে। যদি এটি ব্যাকগ্রাউন্ডে থাকে তবে প্রক্রিয়াটি ঠিক ঠিক শেষ হবে will তবে এটি অগ্রভাগে থাকলে ওএস ধরে নেয় যে ব্যবহারকারী তার / সে যা করছিল তা চালিয়ে যেতে চায়। (আপনি যদি ডিডিএমএস থেকে প্রক্রিয়াটি হারাতে চাইছেন তবে আপনার প্রথমে হোম বোতামটি চাপুন এবং তারপরে এটি হত্যা করুন)
  2. এটিও ধরে নিয়েছে যে প্রতিটি ক্রিয়াকলাপ অন্যান্য সমস্ত ক্রিয়াকলাপের থেকে স্বতন্ত্র। এটি প্রায়শই সত্য হয়, উদাহরণস্বরূপ আপনার অ্যাপ্লিকেশনটি ব্রাউজার ক্রিয়াকলাপ চালু করে, যা সম্পূর্ণ পৃথক এবং আপনার দ্বারা লিখিত হয়নি। ব্রাউজার ক্রিয়াকলাপ তার প্রকাশিত বৈশিষ্ট্যগুলির উপর নির্ভর করে একই টাস্কে তৈরি বা নাও হতে পারে।
  3. এটি ধরে নিয়েছে যে আপনার প্রতিটি ক্রিয়াকলাপ সম্পূর্ণ স্বনির্ভর এবং এক মুহুর্তের নোটিশে হত্যা / পুনরুদ্ধার করা যায়। (আমি বরং এই বিশেষ অনুমানটি অপছন্দ করি, যেহেতু আমার অ্যাপ্লিকেশনটিতে অনেকগুলি ক্রিয়াকলাপ রয়েছে যা প্রচুর পরিমাণে ক্যাশেড ডেটার উপর নির্ভর করে onSaveInstanceState, এটির সময় দক্ষতার সাথে সিরিয়ালিকৃত করা খুব বড় , তবে কী হবে?) বেশিরভাগ লিখিত অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির জন্য এটি সত্য হওয়া উচিত, যেহেতু আপনি কখনই জানেন না যে কখন আপনার অ্যাপটি পটভূমিতে মারা যাবে।
  4. চূড়ান্ত কারণটি এতটা অনুমান নয়, বরং ওএসের একটি সীমাবদ্ধতা: স্পষ্টভাবে অ্যাপ্লিকেশনটি হত্যা করা অ্যাপটি ক্র্যাশ হওয়ার মতো এবং মেমরির পুনর্বিবেচনার জন্য অ্যান্ড্রয়েড অ্যাপটিকে হত্যা করার মতোই। এটি আমাদের অভ্যুত্থানের অবসান ঘটিয়েছে: যেহেতু অ্যাপ্লিকেশনটি প্রস্থান হয়েছে বা ক্র্যাশ হয়েছে বা ব্যাকগ্রাউন্ডে মারা গেছে কিনা অ্যান্ড্রয়েড তা বলতে পারে না, তাই এটি ব্যবহারকারী ধরে নিয়েছিল যে তারা যেখানে ফেলেছিল সেখানে ফিরে আসতে চায় এবং তাই অ্যাক্টিভিটি ম্যানেজার প্রক্রিয়াটি পুনরায় চালু করে।

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

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

সুতরাং, আমার বন্ধ পরামর্শ:

  • প্রক্রিয়াটি হত্যার চেষ্টা করবেন না। হয় finish()সমস্ত ক্রিয়াকলাপে কল করুন বা কল করুন moveTaskToBack(true)
  • যদি আপনার প্রক্রিয়াটি ক্র্যাশ হয়ে যায় বা মারা যায় এবং যদি আমার মতো আপনারও মেমরিতে থাকা ডেটা দরকার হয় যা এখন হারিয়ে গেছে তবে আপনাকে রুট ক্রিয়াকলাপে ফিরে আসতে হবে। এটি করার জন্য, আপনাকে পতাকা সহ startActivity()এমন একটি উদ্দেশ্য সহ কল করা উচিত Intent.FLAG_ACTIVITY_CLEAR_TOP
  • যদি আপনি আপনার অ্যাপ্লিকেশনটিকে Eclipse DDMS দৃষ্টিকোণ থেকে হত্যা করতে চান তবে অগ্রভাগে না থাকাই ভাল ছিল বা এটি পুনরায় আরম্ভ হবে। আপনার প্রথমে হোম বোতাম টিপতে হবে এবং তারপরে প্রক্রিয়াটি মুছে ফেলা উচিত।

8
প্রকৃতপক্ষে, যেহেতু আমি আবার অ্যান্ড্রয়েড দিয়ে শুরু করেছি আমি সমস্ত ক্রিয়াকলাপ শেষ করছি (সময়ের যে কোনও সময়ে কেবলমাত্র একটি ক্রিয়াকলাপ সক্রিয়) এবং তারপরে আমি System.exit (0) কল করি; আমার পরিষেবাতে - এবং এটি যেমন আমি এটি চাই ঠিক তেমন কাজ করে। আমি জানি বেশিরভাগ পিপিএল "এটি করবেন না" বলে, তবে আমি এই পদক্ষেপের সাথে আমার ঠিক একই আচরণ পেতে চাই ...
টেড

13
প্রক্রিয়াটি হত্যা কখনও কখনও খুব দরকারী - উদাহরণস্বরূপ, যখন স্থানীয় কোড ব্যবহার করে এমন গেমগুলি লেখার সময়। প্রক্রিয়াটি হত্যার অর্থ হ'ল তাত্ক্ষণিকভাবে সমস্ত বরাদ্দ মেমরি সিস্টেমে ফিরিয়ে দেওয়া।
সুলতান

10
যে কেউ যত্ন করে, প্রসেস.কিলপ্রসেস সিস্টেম.এক্সিট ()
প্যাসিফিকস্কি

6
একটি সাধারণ এটিভিটিবেস থেকে সমস্ত ক্রিয়াকলাপ উদ্ঘাটন করুন। তারপরে অ্যাপ্লিকেশনটি বন্ধ করতে জোর করে একটি পতাকা ধরে রাখুন, অনুরুপ পরীক্ষা করে ফোর্সটি নিকটে পতাকা সেট করা আছে কিনা তা পরীক্ষা করে দেখুন। যদি তাই হয় কল করুন System.exit (0); এটি পুরো ক্রিয়াকলাপের স্ট্যাকের মধ্য দিয়ে ক্যাসকেড করবে এবং শেষ পর্যন্ত অ্যাপটিকে সম্পূর্ণ বন্ধ করে দেবে।
নার গার

12
প্রকৃত উত্তর দেওয়ার জন্য ধন্যবাদ ( moveTaskToBack()যা আমি খুঁজছিলাম)। এত লোকেরা কেবল "না আপনি সর্বদা আপনার অ্যাপ্লিকেশনটি থেকে বেরিয়ে আসতে চাইছেন বলে মূর্খ" বলে say এমনকি আপনি এটি চান এমন ক্ষেত্রেও থাকতে পারে তা বিবেচনা না করেই (যেমন ব্যর্থ লগইনস)।
টিএমএমএম

179

আমার সমস্ত অ্যাপ্লিকেশনগুলিতে বোতাম ছেড়ে গেছে ... এবং এটির কারণে আমি প্রায়শই ব্যবহারকারীদের কাছ থেকে ইতিবাচক মন্তব্য পাই। প্ল্যাটফর্মটি এমন ফ্যাশনে ডিজাইন করা হয়েছিল যাতে অ্যাপ্লিকেশনগুলির তাদের প্রয়োজন না হয় সেদিকে খেয়াল রাখিনা। "তাদের সেখানে রাখবেন না" বলা এক ধরণের হাস্যকর বিষয়। যদি ব্যবহারকারী প্রস্থান করতে চান ... আমি তাদের ঠিক এটি করার অ্যাক্সেস সরবরাহ করি। আমি মনে করি না এটি কীভাবে অ্যান্ড্রয়েডকে একেবারে পরিচালনা করে এবং একটি ভাল অনুশীলনের মতো বলে মনে হয় তা হ্রাস করে। আমি জীবনচক্রটি বুঝতে পারি ... এবং আমার পর্যবেক্ষণটি হ'ল অ্যান্ড্রয়েড এটি পরিচালনা করতে ভাল কাজ করে না .... এবং এটি একটি মৌলিক সত্য।


15
+1 কারণ দুর্ভাগ্যক্রমে এই সময়ে এটি এত ভাল কাজ করে না (তবে আমি এখনও নকশা অনুযায়ী কাজগুলি করতে চেষ্টা করতে চাই, তাই এটি আমাকে বিভ্রান্তিতে ফেলে দেয়)
রিচার্ড লে মেসুরিয়ার

25
ছাড়ার জন্য আপনি কোন পদ্ধতিটি ব্যবহার করেন?
গ্যারি রুডলফ

4
@ ইগোর ফিনিস () - ক্রিয়াকলাপগুলিতে লিপ্ত হওয়া অ্যাপ্লিকেশনটিকে হত্যা করে না (অ্যাপ্লিকেশন বাড়ায়)। এমনকি কোনও ক্রিয়াকলাপ সক্রিয় না হওয়া সত্ত্বেও সেটিংসটি এখনও সক্রিয় এবং আসল, যেমন যখন ক্রিয়াকলাপগুলি সেগুলি অ্যাক্সেস করার চেষ্টা করে তখন তারা সেগুলি আগে ব্যবহৃত হত। কে System.exit (0); অন্যদিকে অ্যাপ্লিকেশনটিকে হত্যা করে, যেমন আবার যখন অ্যাপ্লিকেশনটি শুরু হয় তখন নতুনভাবে সেটিংসটি শুরু করতে হবে। আমার অ্যাপ্লিকেশনটি ম্যানুয়ালি আপডেট করার সময় আমার এটাই দরকার, কারণ আমি প্রায়শই ডেটা ফর্ম্যাটটি পরিবর্তন করি এবং ততক্ষনে আমার এগুলি পুনরায় শুরু করা দরকার।
নার গার

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

13
হ্যাঁ ... 'অ্যান্ড্রয়েড স্ট্যান্ডার্ড নয়' দিয়ে জাহান্নামে .. অ্যান্ড্রয়েড শক্তিশালী কোজ, এটি মানুষকে পরীক্ষা-নিরীক্ষা করতে সক্ষম করে .. যদি এটি কিছু করার জন্য এপিআই সরবরাহ করে, তবে কীভাবে কেউ বলতে পারেন যে এটি অ্যান্ড্রয়েড মান নয়? আমি এই সমস্ত 'দার্শনিক' উত্তর হজম করতে পারি না। আপনি আপনার ব্যবহারকারীদের কথা মাথায় রেখে অ্যাপটি তৈরি করেন। যদি তারা খুশি হন বা তারা যদি এই বৈশিষ্ট্যটি দেখতে চান তবে তা প্রয়োগ করা একেবারেই ঠিক আছে those তথাকথিত দার্শনিকরা এর বিরুদ্ধে থাকলেও ..
রাহুল

144

একধরনের অ্যাপ্লিকেশন হিসাবে আপনার অ্যাপ্লিকেশন সম্পর্কে চিন্তাভাবনা বন্ধ করুন। এটি ইউআই স্ক্রিনের একটি সেট যা ব্যবহারকারী আপনার "অ্যাপ্লিকেশন" এবং অ্যান্ড্রয়েড পরিষেবাদির মাধ্যমে সরবরাহিত "ফাংশন" এর সাথে ইন্টারঅ্যাক্ট করতে পারে।

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

এটি সহজ। "আমি ইন্ট্রানেটে আছি, বা আমি চালাচ্ছি" বলে নোটিফিকেশন বারে একটি চলমান বিজ্ঞপ্তি দেয় এমন একটি পরিষেবা তৈরি করুন। আপনার অ্যাপ্লিকেশনটির জন্য প্রয়োজনীয় সমস্ত কার্যকারিতা সেই পরিষেবাটি সম্পাদন করুন। আপনার ব্যবহারকারীদের আপনার "অ্যাপ্লিকেশন" এর সাথে ইন্টারঅ্যাক্ট করতে হবে এমন UI এর বিটগুলিতে অ্যাক্সেসের অনুমতি দেওয়ার জন্য সেই পরিষেবার সাথে আবদ্ধ এমন ক্রিয়াকলাপগুলি রয়েছে। এবং একটি অ্যান্ড্রয়েড মেনু -> প্রস্থান (বা লগআউট, বা যাই হোক না কেন) বোতাম রয়েছে যা পরিষেবাটি ছাড়তে বলে, তারপরে ক্রিয়াকলাপটি নিজেই বন্ধ করে দেয়।

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

আমি সত্যিই আপনার সমস্যা দেখতে পাচ্ছি না।


3
@ এরিক, আপনি সমস্যাটি দেখতে পাচ্ছেন না কারণ আপনি এটি থেকে দূরে চলেছেন । "অ্যান্ড্রয়েড মডেল" দ্বারা করা যায় না এমন কাজটি করার জন্য আপনি কেবল পুরানো "প্রোগ্রাম মডেল" এর উপর চালিত অন্য একটি প্রোগ্রাম ব্যবহার করেছেন। "অ্যান্ড্রয়েড মডেল" এর সমস্যাটি দেখতে, আপনাকে কল্পনা করতে হবে যে লিনাক্স / উইন্ডোজ বাক্সগুলিতে দায়িত্ব অর্পণ করার বিলাসিতা আপনার নেই। আপনাকে কল্পনা করতে হবে যে আপনি "অ্যান্ড্রয়েড মডেল" চালিত বাক্সগুলির সাহায্যে ফ্রন্টমস্ট্যান্ড থেকে ব্যাকমোস্ট্যান্ড পর্যন্ত সমস্ত কিছু করতে বাধ্য হন । তারপরে, আপনি দেখতে পাবেন যে "অ্যান্ড্রয়েড মডেল" এর সীমাবদ্ধতা আকাশের মতো পরিষ্কার
পেসারিয়ার

একধরনের অ্যাপ্লিকেশন হিসাবে আপনার অ্যাপ্লিকেশন ভাবেন। এটি জাভাতে লিখিত যা একক জেভিএম (জাভা ভার্চুয়াল মেশিন) প্রক্রিয়া দ্বারা চালিত হচ্ছে। System.exit () JVM থেকে প্রস্থান করে এবং সমস্ত ইউআই স্ক্রিন এবং সমস্ত কিছু সম্পূর্ণ এবং সম্পূর্ণরূপে সমাপ্ত করে। এর ব্যতিক্রম যদি প্রোগ্রামার একাধিক প্রসেসে চলমান একাধিক থ্রেড স্থাপনের সমস্যায় চলে যায় - তবে ডিফল্টরূপে, এরকমটি হয় না এবং গুগলের মতে, সাধারণত করা উচিত নয়।
জেসি গর্ডন 21

@ জেসগোর্ডন এটি ঠিক সত্য নয়। System.exit()স্ট্যাক থেকে কেবল একটি কার্যকলাপ সরিয়ে দেয় s জেভিএম তত্ক্ষণাত পুনরায় পুনর্নির্মাণ করা হয়। এই উত্তর দেখুন ।
forresthopkinsa

1
@forresthopkinsa ঠিক আছে আমি এটিকে অ্যান্ড্রয়েড .0.০ এ পরীক্ষা করেছি। একটি সাধারণ একক থ্রেডেড অ্যাপ্লিকেশনটি এখনও তার নিজস্ব ডেডিকেটেড জেভিএম ইনস্ট্যান্সে চলে, সেই অ্যাপ্লিকেশানের জন্য অনন্য ইউজার আইডি হিসাবে চলছে। আমি এই পরীক্ষার জন্য এখনও একটি বহু-থ্রেডেড অ্যাপ চেষ্টা করিনি। এবং System.exit () টি এখনও সেই অ্যাপ্লিকেশানের জন্য পুরো JVM- কে হত্যা করে। যদি সিস্টেম.এক্সিট () কে প্রাথমিক ক্রিয়াকলাপ থেকে কল করা হয় তবে এটি সবেমাত্র বের হয়। যদি সাবস্টিটিভিটি থেকে সিস্টেম.এক্সিট () কল করা হয়, জেভিএম এখনও নিহত হয়, তবে অ্যান্ড্রয়েড মূল / প্রথম ক্রিয়াকলাপে ফিরে এটি একটি নতুন প্রক্রিয়া আইডির অধীনে পুনরায় চালু করে। android.os.Process.killProcess (android.os.Process.myPid ()); এবং মেরে ফেলুন <পিড> একইভাবে কাজ করুন।
জেসি গর্ডন

1
আকর্ষণীয় .. আপনি যে উত্তরটির সাথে সংযুক্ত হয়েছেন, সন্ধান করছেন, @Fresthopkinsa, দেখে মনে হচ্ছে অ্যান্ড্রয়েড ওয়েব ব্রাউজারগুলির মতো করছে, একটি সিস্টেম.এক্সিটের পরে ক্রিয়াকলাপগুলি পুনরুদ্ধার করছে যাতে ব্যবহারকারী এটির বাইরে এসে লক্ষ্য করে না, তবে সেই ক্রিয়াকলাপটি বাদ দিয়ে যা প্রস্থানটি বেরিয়ে আসে। ।? রহস্যময়। তবে যাইহোক, System.exit () সমস্ত ক্রিয়াকলাপ বন্ধ করে এবং () এর মেমরি মুক্ত করে এবং সেই অ্যাপ্লিকেশনটির জন্য জেভিএমকে সমাপ্ত করে। তবে অ্যান্ড্রয়েড এটিকে পুনরায় চালু / পুনরুদ্ধার করতে অ্যানডিক্স কী ধরণের কাজ করে তা আমার কোনও ধারণা নেই। এটি কি অ্যাপ হত্যাকারী অ্যাপ্লিকেশনগুলিকে ব্যর্থ করতে হবে? সুতরাং আমি অনুমান করি যে কেউ যদি একটি প্রস্থান বোতাম চায় তবে তাদের উচিত এটি মূল ক্রিয়াকলাপে।
জেসি গর্ডন 9

71

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

আমি এখানে আমার দুটি সেন্ট যুক্ত করতে চাই।

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

বলার পরেও আমি এখনও বিশ্বাস করি যে একটি Quitবোতাম থাকা উচিত । কেন? ... আমার বা টেড বা এখানে কোনও প্রযুক্তিবিদদের জন্য নয়, তবে ব্যবহারকারীর শেষ চাহিদা পূরণের একমাত্র উদ্দেশ্যে।

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

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

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


2
ঠিক। গুড ওল 'উইন্ডোজ মোবাইল উইন্ডোজ পিসি হিসাবে একই এক্স বোতামের প্রস্তাব দিয়েছিল, এটি আসলে অ্যাপটি ছাড়েনি, কেবল এটি "স্মার্ট মিনিমাইজড" করেছে। অনেক ব্যবহারকারী সম্ভবত অ্যাপটি সত্যই ছাড়েনি really (এই পদ্ধতিটি দুর্দান্তভাবে কাজ করেছে, যদিও আপনি। নেট কমপ্যাক্ট ফ্রেমওয়ার্ক ব্যবহার করেছেন, অ্যাপটিকে অবহিত করা হয়নি যে এটি ঘটেছে এবং তাই রিসোর্সগুলি মুক্ত করতে বা বাস্তবে প্রস্থান করার বিকল্প নেই)।
কিওয়ার্টি

3
সত্যই, এটি আপনার ব্যবহারকারীদের একটি উষ্ণ, अस्पष्ट অনুভূতি দেওয়ার জন্য মিথ্যা বলার পরিমাণ। শেষ পর্যন্ত, অতীতের ধ্বংসাবশেষগুলি পথের ধারে পড়তে দেওয়া ভাল, পাছে তারা প্রযুক্তির স্থায়ী কাঠামো হিসাবে অবিরত থাকবে না। মোবাইল এবং ওয়েব নতুন প্ল্যাটফর্ম, এবং ডেস্কটপগুলির মতো আচরণ করবে বলে আশা করা যায় না। এবং উপাখ্যান্তভাবে, কমপক্ষে, অ্যান্ড্রয়েডের আজীবন সিদ্ধান্তগুলি ব্যবহারকারীদের কাছে ধরা পড়েছে: আমার সবচেয়ে বড় অ্যাপ্লিকেশনটি 2 বছরের বার্ষিকী পেরিয়ে যাওয়ার সাথে সাথে আমি "প্রস্থান" বোতামগুলির জন্য ব্যবহারকারীর অনুরোধের প্রবাহটি লক্ষ্য করেছি যে তারা ব্যবহার করতে শুরু করেছে নতুন প্ল্যাটফর্ম
জন ও

2
@ জন আপনি কি সুপারিশ করেন? অ্যাপের কোথাও 'প্রস্থান' বিকল্পের প্রস্তাব দিচ্ছেন না?
ইগোরগানাপলস্কি

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

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

37

আপনি বোতাম টিপে বা আপনার কাছে কল করে, প্রস্থান করতে পারেন । আপনি যদি স্পষ্টভাবে এটিকে হত্যা করতে চান তবে কেবলমাত্র একটি থেকে কল করুন ।Backfinish()Activityfinish()MenuItem

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


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

2
রোমেন যেমন বলেছেন, মূল অ্যাপ্লিকেশনগুলি কীভাবে কাজ করে তা তা নয়। সুতরাং যদি ব্যবহারকারীরা কোনও অ্যাপ্লিকেশন ছাড়ার জন্য "পিছনে" টিপতে অভ্যস্ত হয়, তবে সম্ভবত মনে হয় তারা সম্ভবত ছাড়ার পরিবর্তে আপনার অ্যাপ্লিকেশনটিতে এটি চালিয়ে যেতে থাকবে? আপনি প্রারম্ভকালে, অথবা onDestroy (), বা পুনরাবৃত্তি এলার্ম ব্যবহার করে একটি আপডেট চেক করতে পারেন .. এটি এমন কোনও কিছু বলে মনে হয় না যা ব্যবহারকারীর দ্বারা ট্রিগার করা প্রয়োজন।
ক্রিস্টোফার অর

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

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

1
জে: না, আমি যেমন অসম্পূর্ণভাবে বলেছি এটি কোনও বাজার অ্যাপ নয়, এবং এটিও হবে না। এটি একটি খুব বিশেষায়িত অ্যাপ, সাধারণ ব্যবহারের জন্য নয়।
টেড

31

এই বিতর্কটি বিকাশকারীরা সবচেয়ে ভাল জানেন কিনা বা ব্যবহারকারী সবচেয়ে ভাল জানেন কিনা এই প্রশ্নটি উত্থিত হয়। মানব উপাদানগুলির সমস্ত ক্ষেত্রে পেশাদার ডিজাইনাররা প্রতিদিন এটির সাথে লড়াই করে।

টেড একটি বক্তব্য রেখেছেন যে বাজারে সর্বাধিক ডাউনলোড হওয়া অ্যাপগুলির মধ্যে একটি হল 'অ্যাপ কিলার'। লোকেরা অ্যাপ্লিকেশন ছেড়ে দিলে তারা কিছুটা অতিরিক্ত সেরোটোনিন পান। তারা এটিতে একটি ডেস্কটপ / ল্যাপটপ দিয়ে অভ্যস্ত। এটি জিনিসগুলিকে দ্রুত এগিয়ে চলেছে keeps এটি প্রসেসরটিকে শীতল রাখে এবং ফ্যানটি চালু করতে দেয়। এটি শক্তি কম ব্যবহার করে।

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

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


8
হ্যাঁ, একটি 'প্রস্থান' বোতাম থাকা প্রকৃতপক্ষে ব্যবহারকারী-বান্ধব। এর মধ্যে আরও 5 টি ক্রিয়াকলাপ হলে ব্যবহারকারী কীভাবে অ্যাপটি ত্যাগ করবেন? নিশ্চিত যে তারা একাধিকবার চাপতে পারে, তবে আমি মনে করি না তারা এ জাতীয় পছন্দ করবে।
ইগোরগানাপলস্কি

4
মাত্র 5? অ্যান্ড্রয়েড ২.২ ওয়েব ব্রাউজারটি শেষ পর্যন্ত না বের হওয়া পর্যন্ত আমাকে ব্যাক বোতামটি টেপ করতে কয়েক মিনিট ব্যয় করতে বাধ্য করে
জো প্লান্ট

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

10
যখন আপনার ধর্ম বলে যে অ্যান্ড্রয়েড টাস্ক কিলারটি "অপ্রয়োজনীয়", কিন্তু কোনও ব্যবসা চলছে না এমন বোবা কাজগুলি বন্ধ করার জন্য এটিকে ব্যবহার করে ওএসকে স্বাভাবিক গতির 1-5% ডলারে ক্রলিং থেকে স্বাভাবিক গতির 100% এ ফিরিয়ে দেয় ( পরিমাপ করা হয়েছে) এটিএম-এর অন্যান্য অংশ জুড়ে 100% সময় প্রতি 2 বছরের বেশি সময় ধরে ব্যবহার করে
প্রতিবার সিস্টেমটি 50 এমবি

@ জোপ্ল্যান্ট আপনি প্রথমে সমস্ত খোলা ট্যাব এবং উইন্ডোটি বন্ধ করতে পারেন এবং তারপরে কেবল একবার পিছনের বোতামটি টিপতে পারেন :) অন্তত আমার জিএস 2 এ এটি।
ld

29

টেড, আপনি যা সম্পাদন করতে চেষ্টা করছেন তা করা যেতে পারে, সম্ভবত আপনি এখনই এটি কীভাবে ভাবছেন তা নয়।

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


আমি অ্যান্ড্রয়েড.কম = এ বেশিরভাগ স্টাফ পড়েছি) এবং আমি আমার বেশ কয়েকটি প্রশ্নের সাথে লিঙ্ক করতে পারি যেখানে আমি ক্রিয়াকলাপ সম্পর্কে কথা বলি, তাই সত্য না ( উদাহরণস্বরূপ : stackoverflow.com/questions/2032335/… বা স্ট্যাকওভারফ্লো / প্রশ্ন / 2032335 /… ইত্যাদি ...) তবে আমি এটিকে শেষবার দিতে পারি এবং সার্ভিস হিসাবে "অ্যাপ" তৈরি করার চেষ্টা করতে পারি ...
টেড

4
কোনও অ্যাপ্লিকেশনটিতে পরিষেবাদি এবং ক্রিয়াকলাপ থাকতে পারে এবং আপনার অ্যাপ্লিকেশানটির উভয়ের প্রয়োজন হতে পারে বলে মনে হচ্ছে। ক্রিয়াকলাপটি কেবলমাত্র ইউআই অংশ।
হারুন

23

পোস্ট ব্লগ যখন Android অ্যাপ্লিকেশানগুলি (ইঙ্গিত: কখনও) একটি প্রস্থান বাটন অন্তর্ভুক্ত করুন থেকে এটা অনেক ব্যাখ্যা, এ পর্যন্ত চেয়ে আমি করতে পারেন ভালো। আমি আশা করি প্রতিটি অ্যান্ড্রয়েড বিকাশকারী এটি ইতিমধ্যে পড়েছে।

উদ্ধৃতাংশ:

আমার অভিজ্ঞতায় [ব্যবহারকারীরা] সত্যিই যা চান তা হ'ল: কোনও অ্যাপ্লিকেশন রিসোর্স (ব্যাটারি, সিপিইউ চক্র, ডেটা স্থানান্তর ইত্যাদি) বন্ধ করে দেবে এই গ্যারান্টি দেওয়ার একটি স্পষ্ট উপায়।

অনেক ব্যবহারকারী বুঝতে পারেন যে একটি প্রস্থান বাটন এই প্রয়োজনীয়তাটি প্রয়োগ করে এবং এটি যুক্ত করার জন্য বলে। বিকাশকারীরা, তাদের ব্যবহারকারীদের খুশি করতে স্বেচ্ছায় একটি যুক্ত করুন। এরপরেই তারা দুজনেই ব্যর্থ হয়।

  • বেশিরভাগ ক্ষেত্রে প্রস্থান বোতামটি কেবল কল করে Activity.finish()। এটি ঠিক পিছনের বোতামটি হিট করার সমতুল্য। যথাযথভাবে। পরিষেবাগুলি চলতে থাকে এবং পোলিং চলতে থাকে। ব্যবহারকারীরা ভাবতে পারে তারা অ্যাপটিকে মেরে ফেলেছে তবে তারা তা করেনি এবং শীঘ্রই তারা আরও বিরক্ত হবে।
  • প্রস্থান আচরণ এখন অস্পষ্ট। আপনার প্রস্থান বোতামটি কি কেবলমাত্র কার্যকলাপ বন্ধ করে দেবে, বা এটি সম্পর্কিত সমস্ত পরিষেবা, প্রাপ্তি এবং বিপদাশঙ্কাও বন্ধ করে দেবে? কি করা উচিত Back? Homeপরিবর্তে তারা আঘাত করলে কি হবে ? আপনার অ্যাপ্লিকেশনটিতে একটি উইজেট থাকলে কী হবে? প্রস্থান বোতামটি খুব আপডেট হওয়া থেকে থামানো উচিত?

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

এগিয়ে যান এবং সম্পূর্ণ নিবন্ধ পড়ুন।


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

@IgorG। সঙ্গীত প্লেয়ার অ্যাপ্লিকেশনটির সঙ্গীত বাজানো বন্ধ করতে "স্টপ" বোতাম দরকার, অ্যাপটি থেকে বেরিয়ে আসার জন্য "প্রস্থান" বোতামটি নয়।
ধীররাজ ভেকাকোমা

আপনি কি কখনও পান্ডোরা, iHeartRadio, Spotif, Jango এবং অন্যান্য সংগীত স্ট্রিমিং অ্যাপ্লিকেশন ব্যবহার করেছেন? তাদের সবার একটি ছাড়ার বোতাম রয়েছে। গানের প্লে থামানো কোনও অ্যাপ্লিকেশন ছাড়ার মতো বিষয় নয়। বিশেষত যদি আপনার বিজ্ঞপ্তি বারে কোনও পরিষেবা চলমান থাকে।
ইগোরগানাপলস্কি

2
পৌরাণিক কাহিনী বা না, আদিম ব্যবহারকারী বা না, তবে প্রায় প্রতিটি ইউআই সফটওয়্যার - যে কোনও প্ল্যাটফর্ম এবং ওএস-এ লিখিত / বন্ধ / প্রস্থান বাটন প্রয়োগ করে। আর কীভাবে তা বাস্তবায়ন করবেন?
ইগোরগানাপলস্কি

3
@ ধীরাজ.বিএস।, অ্যাপটি দৃশ্যমান না হলে কেবল সম্পদ গ্রহণ বন্ধ করুন? খারাপ পরামর্শ। খুব। খুব এক্স 99। আমি যখনই নিজেকে একটি ফটো ইমেল করার চেষ্টা করি তখন আমাকে অ্যাপ্লিকেশনটি পুরো 5 মিনিটের জন্য দৃশ্যমান রাখতে হয় কারণ আমি যদি এটি হ্রাস করি তবে এটি ফটোতে ইমেল করা বন্ধ করে দেয়। সঠিক, আমি কেবলমাত্র কিছু বিকাশকারীদের কারণেই অ্যাপ্লিকেশনগুলি কেবল দৃশ্যমান অবস্থায় চালিত হওয়া উচিত বলেই পুরো 5 মিনিটের জন্য আমি আমার ফোনটি ব্যবহার করতে পারি না। এখন ভিডিওর মতো কোনও বৃহত্তর ফাইল প্রেরণ কল্পনা করুন .....
পেসারিয়ার

21

উত্তর: (রোমেন গাই): ব্যবহারকারী তা করেন না, সিস্টেম এটি স্বয়ংক্রিয়ভাবে পরিচালনা করে। ক্রিয়াকলাপটি জীবনচক্র (বিশেষত অনপজ / অনস্টপ / অনডেস্ট্রয়) এর জন্য। আপনি যা-ই করেন না কেন, "প্রস্থান" বা "প্রস্থান" অ্যাপ্লিকেশন বোতামটি রাখবেন না। এটি অ্যান্ড্রয়েডের অ্যাপ্লিকেশন মডেলের সাথে অকেজো। এটি কোর অ্যাপ্লিকেশনগুলি কীভাবে কাজ করে তার বিপরীত।

1: সম্পূর্ণভাবে কোনও অ্যাপ্লিকেশন থেকে প্রস্থান করা সাধারণত অযৌক্তিক হতে পারে তবে এটি অকেজো নয়। উইন্ডোজের কোনও প্রস্থান বিকল্প না থাকলে কী হবে? মেমরি পূর্ণ হওয়ার সাথে সাথে সিস্টেমটি কুকুর ধীর হয়ে যাবে এবং ওএসকে অনুমান করতে হবে যে আপনি কোন প্রোগ্রামগুলি দিয়েছিলেন। রোমেন গাই বা এমনকি ল্যারি পেজ এবং সের্গেই ব্রিন কী বলেন তা আমি মাথা ঘামাই না - এগুলি সন্দেহাতীত সত্য: নতুন অ্যাপ্লিকেশন চালু করার আগে তাদের স্মৃতিশক্তি অর্জনের জন্য যখন তাদের কাজগুলি শেষ করতে হয় তখন সিস্টেমগুলি ধীর গতিতে চলে। আপনি কেবল আমাকে বলতে পারবেন না যে কোনও অ্যাপ্লিকেশন মারতে সময় লাগে না! এমনকি দূরবর্তী বড় থেকে হালকা সময় লাগবে ... আছে হয় সম্পূর্ণরূপে বন্ধ অ্যাপস ব্যবহারকারীর অনুমতি মধ্যে কিছু ব্যবহার।

2: মূল অ্যাপ্লিকেশনগুলি কীভাবে কাজ করে তার বিপরীতে? তুমি কি বলতে চাইছ? যখন আমি আপাতত কোনও অ্যাপ্লিকেশন চালাচ্ছি, এটি আর কোনও কাজ করছে না ... এটির মেমরির প্রয়োজন হলে এটি কেবল ওএস দ্বারা নিহত হওয়ার অপেক্ষায়।

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

যদি ব্যবহারকারী কোনও অ্যাপ্লিকেশন ছোট করতে চান তবে সবচেয়ে ভাল বিষয় হ'ল এটি হ্রাস করা। কোনও ব্যবহারকারী যদি কোনও অ্যাপ্লিকেশন থেকে প্রস্থান করতে চান তবে সর্বকালের মাধ্যমে প্রস্থান করা ভাল।

এটা কি ভ্রান্ত হয়? এটি অ্যান্ড্রয়েডের দৃষ্টিভঙ্গি - তারা এটি দেখে ভ্রান্ত হয়েছে। এবং অনেকগুলি স্বতন্ত্র রোকি অ্যান্ড্রয়েড বিকাশকারী এটির উপরে ভ্রষ্ট হয়েছেন।

তবে এটি ঠিক নীচে এলে এখানে ভাল কোডিং এবং খারাপ কোডিং থাকে od প্রোগ্রামের প্রবাহের ভাল মডেল রয়েছে এবং খারাপ প্রোগ্রাম প্রবাহের মডেলগুলি রয়েছে।

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

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

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

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

স্থগিত করা এবং প্রস্থান করা দুটি গুরুত্বপূর্ণ কাজ এবং এটি অন্যটির ভূমিকাও পূরণ করে না।


2
"ব্যবহারকারী যদি কোনও অ্যাপ্লিকেশন ছোট করতে চান, তবে সর্বনিম্ন বিষয়টি এটি হ্রাস করা উচিত a যদি কোনও ব্যবহারকারী কোনও অ্যাপ্লিকেশনটি প্রস্থান করতে চান তবে সর্বকালের বাইরে থেকে বেরিয়ে আসা ভাল" " - একটি জিনিস রয়েছে (অভিজ্ঞতার দশকের আরও বেশি ভিত্তিতে): ব্যবহারকারীরা খুব কমই জানেন যে তারা কী চান। আপনি যদি তাদের সহায়তা না করেন তবে আপনাকে এটি পরিবর্তন করতে হবে। উপরের নমুনাগুলি সম্পর্কে: আপনাকে অন্য নমুনা দেই: আপনি গাড়িতে কাজ করছেন এবং জিনিসগুলির জন্য হাতে একটি টেবিল রাখুন। আপনি কি সবসময় প্রয়োজনীয় সমস্ত সরঞ্জামকে মন্ত্রিসভায় সংশোধন করতে বা সর্বাধিক ব্যবহৃত সরঞ্জামগুলি হাতে রাখার জন্য রেখে চলেছেন? এবং নতুন স্থানের জন্য একটি বড় দেরী ব্যবহারের জায়গা রেখেছেন?
হোগো

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

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

আসলে আমি আমার উইন্ডোজ মেশিনে প্রোগ্রামগুলি বন্ধ করি না, আমার 32 গিগাবাইট র‌্যাম রয়েছে, আমি কেবল সমস্ত কিছু চালিয়ে যাই, আমি আমার কাজ শেষ করার পরে এগুলি বন্ধ করি। প্রোগ্রামটি কেন বন্ধ করুন, এটি আবার 5 মিনিট পরে খোলার জন্য, এটির কোনও মানে হয় না। একটি বৃহত সি ++ প্রকল্পের কথা চিন্তা করুন যা প্রতিক্রিয়াশীল হতে 2 মিনিট সময় নেয়, আমি কেবল ভিজ্যুয়াল স্টুডিওটি চিরতরে খোলা রাখি। এবং আমি আশা করি এটি খোলার 15 দিনের পরেও ক্রাশ না হবে (এবং হ্যাঁ, আমি এটির জন্য ইসিসি মেমরি ব্যবহার করি)।
লুইজ ফিলিপ

মেশিন শপের সাথে সাদৃশ্যটি বেশ ভাল, আমি সর্বাধিক ব্যবহৃত সরঞ্জামগুলিকে আমার ডেস্কের উপরে রাখি, আমি সরঞ্জামটি বাছাই করি না, এটি ব্যবহার করি না এবং প্রতিবারই এটি আবার রেখে দেই। এছাড়াও, আমি দিনটি শুরু করি না, কম্পিউটার চালু করি না, এটি শুরু হওয়ার জন্য অপেক্ষা করুন, আইডিই খুলুন, যাই হোক না কেন। আমি কেবল এটি চালু রেখে চলেছি, আধুনিক কম্পিউটার 40W এ অলস থাকতে পারে, কেন বন্ধ হচ্ছে? এটি উপাদানগুলিও কম পরিধান করে (কোনও ইনারশাল কারেন্ট নেই, EEs এটি জানে না :))
লুইজ ফিলিপ

19

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

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

আপনার যদি প্রস্থানের সময় চলমান এমন কোডের দরকার হয় তবে আপনি অনপজ (), অনস্টপ (), বা অনস্ট্রাস্টয় () যথাযথভাবে ওভাররাইড করতে পারেন। http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


5
আমি আবিষ্কার করেছি এমন অন্যান্য অগোছালো জিনিসগুলির সাথে আমিও মনে করি যে অ্যান্ড্রয়েডের জন্য আমাদের অ্যাপ্লিকেশন বিকাশ ঘটবে না। এটি খুব বেশি "বড় ভাই" - যা চলছে, যেখানে অ্যান্ড্রয়েড আমাকে জানায় যে কোন অ্যাপটি চলতে হবে বা না করা উচিত। প্রোগ্রামার হিসাবে আমার সেই পছন্দটি হওয়া উচিত, গুগল বা অ্যান্ড্রয়েড = (
টেড

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

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

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

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

19

আপনি কীভাবে আপনার ডেটা / সংযোগগুলি (এবং এর মাধ্যমে আপনার "অ্যাপ্লিকেশন") কীভাবে তৈরি করবেন তা অনুধাবন করতে না পারলে অ্যান্ড্রয়েডের সাথে আপনার যা করার প্রয়োজন তা করতে আপনি অক্ষম হবেন।

যারা এই cutesy ছোট অ্যাপ কিলারগুলি ডাউনলোড করেন তারা সাধারণত দেখতে পান যে তারা ব্যাটারি লাইফ বা মেমরির ব্যবহারে সহায়তা করে না, তবে ওএসকে দক্ষতার সাথে মেমরি পরিচালনা করার কাজটি করতে বাধা দেয় ...

http://android-developers.blogspot.com/2010/04/multitasking-android-way.html


আমরা যখন টাস্ক কিলারদের নিয়ে কথা বলছি, কয়েকদিন আগে অ্যান্ড্রয়েডের রেডডিটে একটি খুব আলোকিত পোস্ট উপস্থিত হয়েছিল। সংক্ষিপ্তসারটি হ'ল, টাস্ক কিলারগুলিকে
নিল ট্রাফট

@ নীল ট্রাফ্ট, আমি পোস্টটিতে মন্তব্যগুলি খুব আলোকিত করে দেখেছি। স্টোরগুলিতে বিক্রয় প্রতিনিধিরা তাদের গ্রাহকদের জন্য টাস্ক কিলারদের সুপারিশ করছে এবং ইনস্টল করছে :)
দীপু

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

@ জেসি গর্ডন, আপনি কোনও অ্যাপ্লিকেশন হত্যা করার পরে আপনি কি প্রকৃত প্রক্রিয়াগুলি দেখেছেন? তারা পুনরায় চালু হয়, ওএস ধরে নেয় যে কোনও সমস্যা হয়েছে ... মেমরির প্রয়োজন হলে ওএস অ্যাপ্লিকেশনগুলিকে মেরে ফেলবে। আপনি কি এখানে আশেপাশে উল্লিখিত নিবন্ধগুলিতে পোস্ট কিছু পড়েছেন?
ড্যান

@ ড্যান, অ্যান্ড্রয়েড এই জাতীয় কিছু করবে তা ভাবতে .... এটির জন্য সত্যিই কিছু ধরণের সাদা ধোয়া পুনর্-শিক্ষার প্রয়োজন।
পেসারিয়ার

18

আমি অ্যাডিসন-ওয়েসলি দ্বারা প্রকাশিত "অ্যান্ড্রয়েড ওয়্যারলেস অ্যাপ্লিকেশন ডেভলপমেন্ট" পড়ার বিষয়টি বিবেচনা করব । আমি কেবল এটি শেষ করছি এবং এটি খুব ভাল।

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

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

যাইহোক, আমি অ্যাডিসন-ওয়েসলি বা এই বইয়ের সাথে যুক্ত কোনও ব্যক্তি বা প্রতিষ্ঠানের সাথে কোনওভাবেই অনুমোদিত নয়। আমার পোস্টটি পুনরায় পড়ার পরে আমার মনে হয় আমি একটু ফ্যানবয়েশ এসেছি। আমি ঠিক সত্যই, সত্যই এটি উপভোগ করেছি এবং এটি অত্যন্ত সহায়ক বলে মনে করেছি। :)


2
বই টিপ জন্য ধন্যবাদ। আমি পারব কিনা এবং আমি অ্যান্ড্রয়েড বন্দরটিতে যাওয়ার সিদ্ধান্ত নিয়েছি কিনা তা একবার দেখে নেব। যদিও এটি আবার বলা যায়: কম্পিউটারে যখন আসে আমাদের ব্যবহারকারীরা খুব আপ টু ডেট হয় না। তাদের জন্য অ্যান্ড্রয়েডের নোটিফিকেশন বারটি ব্যবহার করা আমার পক্ষে খুব কঠিন হবে। খুব ছোট (তাদের বিগ আঙুলগুলি হিহ আছে)। এটি তাদের জন্য পৃথক বিশ্ব, সুতরাং আমাদের এটি সহজ এবং ব্যবহারকারীর জন্য বিকল্প ছাড়াই রাখা দরকার। আমরা আমাদের নেট নেট সলিউশনটি এটি মাথায় রেখে তৈরি করেছি - তাদের পছন্দ দিন না =)
টেড

আমি শুনেছি। আপনাকে ধরে নিতে হবে বেশিরভাগ ব্যবহারকারী খুব টেক স্মার্ট নয়।
অ্যান্ডি

8
একটি মোবাইল ডিভাইস কতটা "রিসোর্স" থাকে তার মন্ত্রটি নিয়ে আমি এতটাই ক্লান্ত হয়ে পড়েছি। জেগে উঠুন, এগুলি 500Mhz এর চেয়ে বেশি চলছে এবং এতে প্রচুর স্মৃতি রয়েছে। আমার পুরানো ডেল অক্সিমের 128 এমবি র‌্যাম ছিল। সেখানে উপস্থিত ডিভাইসগুলিতে সাধারণত 512RAM এর বেশি থাকে এবং 1GHZ এ চলছে! এটি আমার পুরানো পেন্টিয়াম 90Mhz এর চেয়ে 10 গুণ বেশি, এবং আমি পিপিএল "খুব সীমাবদ্ধ সংস্থান" এই এবং এটি বলতে শুনিনি। কফির গন্ধ জাগ্রত করার সময় - আমরা এখন ৮০ এর দশকে নয়, ২০১০ সালে আছি।
টেড

16

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

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

তাহলে আপনি কীভাবে আপনার অ্যাপ্লিকেশনটিকে অ্যান্ড্রয়েডে আত্মহত্যা করতে বলছেন? ঠিক আছে, কৌশলটি সহজ:

স্ট্যান্ডার্ড অ্যান্ড্রয়েড.এপ.এপ্লিকেশন ক্লাস থেকে উত্তরাধিকার সূত্রে আপনার নিজের অ্যান্ড্রয়েড অ্যাপ্লিকেশন ক্লাস তৈরি করুন (এটিকে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে ঘোষণা করতে ভুলবেন না)।

অনক্রিয়েট () পদ্ধতিটি ওভাররাইড করুন এবং আপনার অ্যাপ্লিকেশন শুরু হওয়া প্রক্রিয়া আইডি সংরক্ষণ করুন:

this.pid = android.os.Process.myPid(); // Save for later use.

এখন আপনার অ্যাপ্লিকেশনটি হত্যা করতে একটি কিল () পদ্ধতি সরবরাহ করুন:

android.os.Process.sendSignal(pid, android.os.Process.SIGNAL_KILL);

এখন যখনই আপনার আত্মহত্যা করতে আপনার অ্যাপের প্রয়োজন হবে ঠিক তেমন অ্যাপ্লিকেশন প্রসঙ্গে টাইপ করুন এবং আপনার হত্যার পদ্ধতিটি কল করুন!

((MySuicidalApp) context.getApplicationContext()).kill()

কেবল মনে রাখবেন যে অ্যান্ড্রয়েডে বিশেষত পরিষেবাদি সম্পর্কিত প্রসেস ম্যানেজমেন্ট নীতিগুলির কারণে অ্যান্ড্রয়েড কেবল আপনার পরিষেবাটি পুনরায় চালু করতে পারে (দেখুন আপনার অ্যান্ড্রয়েডে টাস্ক কিলার ব্যবহার করা উচিত নয় )।


হ্যাঁ, আমি কেবল এখানে এসেছি কারণ আমি আমার অ্যাপটিকে এমন এক পরিস্থিতিতে বন্ধ করতে চেয়েছিলাম যার অর্থটি বোঝা যায়, আমার ওবিবি ডেটা ক্যাশেটি দূষিত এবং আমার পুরো অ্যাপ্লিকেশনটি পুনরায় চালু করা দরকার
লুইজ ফিলিপ

14

আমি যখন অ্যান্ড্রয়েডে কোনও অ্যাপ্লিকেশন কল্পনা করি, তখন আমি এটি এভাবে দেখি:

  • আপনি আপনার আবেদনটি নিয়ে কাজ করছেন
  • ফোন বেজে উঠল
  • আপনি কল নিন
  • কলটির শেষে, আপনি যেখানে ছিলেন সেখানে একই স্থানে আপনার আবেদনটিতে ফিরে আসবেন

এটি করতে, আপনার কেবলমাত্র আপনার ফোনের Backবোতাম বা Homeসংক্ষিপ্ত বা দীর্ঘ চাপ দিয়ে বাটন প্রয়োজন এবং বিজ্ঞপ্তি বারটি।

যখন আমি আমার অ্যাপ্লিকেশনটি প্রস্থান করি, আমি কেবল Backবাটনটি না ছাড়াই কেবলমাত্র বোতামটি ব্যবহার করি Home

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

পিসিগুলিতে আপনার একটি মাল্টি-জিইউআই ডেস্কটপ রয়েছে এবং অ্যান্ড্রয়েডে আপনার স্পষ্টতই মাল্টি-টাস্ক রয়েছে তবে আপনি একবারে একটি অ্যাপ্লিকেশন প্রদর্শন করেন (আমি এখানে উইজেটগুলি বিবেচনা করি না ^^)। এবং একটি মোবাইল ফোনে, যে কোনও সময় আপনি যা করছেন তার থেকেও গুরুত্বপূর্ণ কোনও কাজের জন্য আপনার কাছে একটি বিজ্ঞপ্তি থাকতে পারে।

সুতরাং একটি অ্যাপ্লিকেশনটির পুরো ধারণাটি "অ্যাপ্লিকেশন - কর্ম - প্রস্থান অ্যাপ্লিকেশন প্রবেশ করান" এর চেয়ে আলাদা কিছু নির্ভর করে।


12

Hmmmm ...

আমি মনে করি আপনি কেবল অ্যান্ড্রয়েড অ্যাপটি সঠিকভাবে দেখতে পাচ্ছেন না। আপনি সহজে যা চান তার মতো কিছু করতে পারেন:

  • বিকাশকারী লাইভসাইলে ডকুমেন্টেশনে যেমন উত্সাহিত হয় তেমন অ্যাপ্লিকেশন কার্যকলাপগুলি রাষ্ট্র সংরক্ষণ / পুনরুদ্ধার করুন।

  • যদি পুনরুদ্ধার পর্যায়ে কিছু লগইন প্রয়োজন হয় (লগইন / সেশনের তথ্য উপলব্ধ নেই) তবে এটি করুন।

  • অবশেষে একটি বোতাম / মেনু / সময়সীমা যুক্ত করুন যাতে আপনি finish()লগইন এবং অন্যান্য সেশনের তথ্য সংরক্ষণ না করেই কোনও কাজ করবেন , স্পষ্টতই অ্যাপ্লিকেশন সেশনের সমাপ্তি তৈরি করবেন: সুতরাং যদি অ্যাপ্লিকেশনটি আবার চালু করা / সামনে আনা হয় তবে এটি একটি নতুন সেশন শুরু করবে।

অ্যাপটি সত্যিই মেমরি থেকে সরানো হয়েছে কিনা তা আপনি সত্যিই চিন্তা করেন না।

আপনি যদি সত্যিই এটিকে স্মৃতি থেকে সরিয়ে নিতে চান (এটি নিরুৎসাহিত করা হয়, এবং কী উদ্দেশ্যে বিটিডাব্লু?) আপনি (বা সম্ভবত ?) onDestroy()দিয়ে শর্তাধীন এটি হত্যা করতে পারেন । অবশ্যই এটি সেই ক্ষেত্রেই করুন যেখানে আপনি "অ্যাপ্লিকেশনটি সত্যিই শেষ করতে চান", কারণ এটি ক্রিয়াকলাপের স্বাভাবিক আজীবনের অংশ এবং কোনও অ্যাপ্লিকেশন শেষ নয়।java.lang.System.exit(0)restartPackage(..)onDestroy()


11

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


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

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

10

আমি টেডের সাথে একমত আমি বুঝতে পারি যে অ্যাপ্লিকেশনটি প্রস্থান করা "অ্যান্ড্রয়েডের উপায়" নয়, তবে মনে হচ্ছে এটি এড়ানো উচিত নয়। আপনি যে অ্যাপ্লিকেশনটিতে আসল প্রস্থান চান তা এখানে কেবলমাত্র তিনটি কারণ (কেবল ক্রিয়াকলাপ নয়):

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

  2. যদি আপনার অ্যাপ্লিকেশনটিতে মেমরির সংবেদনশীল ডেটা থাকে, তবে আপনি অ্যাপ্লিকেশনটি মারতে পছন্দ করতে পারেন যাতে কোনও ভাইরাস / কৃমি / দুর্বৃত্ত অ্যাপ্লিকেশনটি এতে না পারা যায়। আমি জানি সুরক্ষা মডেলটি এটি রোধ করার কথা ছিল, তবে কেবল যদি ...

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


6
আপনি কী "অ্যাপ্লিকেশন" উপস্থাপন করেন বলে মনে করেন? আমি যদি ফেসবুক অ্যাপটি খুলি এবং একটি নতুন প্রোফাইল পিক সেট করি - আমার ক্যামেরা বা গ্যালারী অ্যাপ্লিকেশনগুলি শুরু হয়ে যায়। একজন ব্যবহারকারী হিসাবে, আমি এখনও একই কাজটি সম্পাদন করছি (ফেসবুক ব্যবহার করে)। আমি যদি তখন ফেসবুক বন্ধ করার সিদ্ধান্ত নিই তবে আমার ক্যামেরা এবং গ্যালারী অ্যাপ্লিকেশনগুলিকে খুব বেশি বন্ধ করতে হবে (যেহেতু তারা ফেসবুক থেকে শুরু করা ক্রিয়াকলাপ) তবে ... আমি যদি আমার অন্যান্য ছবিগুলি সম্পাদনার মাঝখানে ছিলাম এবং কেবল ফেসবুক বন্ধ করার ইচ্ছা করতাম ? আপনি সমস্যাটি সম্ভাব্য ডেটা হ্রাস-এ স্থানান্তরিত করে দিতেন।
seanhodges

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

2
1. আমি মনে করি 99.99% অ্যান্ড্রয়েড ব্যবহারকারীরা ওএস কীভাবে পর্দার আড়ালে অ্যাপ্লিকেশন পরিচালনা করে তা নিয়ে চিন্তা করা উচিত নয়। বাকিগুলি গিকস এবং উন্নত সরঞ্জামগুলি সন্ধান করবে যাতে তারা যা চায় তার ঠিক আচরণ করবে। ২. ক্রিয়াকলাপ বিরতি দেওয়া বা বন্ধ হয়ে গেলে আপনি যেকোন সংবেদনশীল ডেটা সর্বদা আনলোড করতে পারেন। ৩. উপরের মতো একইসাথে, লাইফসাইকেল কলব্যাক পদ্ধতিতে সংস্থানগুলি মুক্ত করা যায়। ক্রিয়াকলাপটি আবার শুরু হলে, সংস্থানগুলি আবার বরাদ্দ করা যেতে পারে।
Zsolt Török

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

2
@ জসোল্টট্রিক, ৯৯.৯৯% লোক ধীর কম্পিউটার / ফোন নিয়ে কাজ করে এবং ওএস কীভাবে পর্দার আড়ালে অ্যাপ্লিকেশন পরিচালনা করে তা নিয়ে চিন্তা করতে বাধ্য হয়।
পেসারিয়ার

10

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

এবং এটি অ্যান্ড্রয়েড দ্বারা ভারী ব্যবহৃত হয়:

কিছু হ'ল অ্যাপস এই কিল অ্যাপগুলিতে সহায়তা করার জন্য উপলব্ধ available


9

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

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

যদি এমন কিছু বিশেষ ক্রিয়া থাকে যা কেবলমাত্র "প্রস্থান" -এর মধ্যে ঘটে থাকে যেমন ব্যবহারকারীর কাজ বা যা কিছু সংরক্ষণ করা হয়, আপনি উপরের রুটিনটির পুনরায় সূচনা অংশের পূর্বে এগুলি সম্পাদন করতে পারেন।

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

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

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

সিস্টেম.এক্সিট (0) সম্পর্কিত:

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

বিশেষত, আপনি যদি নিজের অ্যাপ্লিকেশনটি খোলার জন্য সাম্প্রতিক অ্যাপ্লিকেশন তালিকাটি ব্যবহার করেন এবং তারপরে অ্যাপ্লিকেশনটি বন্ধ করার জন্য পিছনের বোতামটি ব্যবহার করেন (সেই সাথে system.exit (0) এর মাধ্যমে প্রয়োগ করা হয়েছে), সাম্প্রতিক অ্যাপ্লিকেশন তালিকাটি আবার দৃশ্যমান হবে, যেমনটি এটি হবে কখনও বন্ধ ছিল না। আপনি যদি সেই তালিকায় আপনার অ্যাপ্লিকেশনটির এন্ট্রিটিতে এটিকে দ্বিতীয় বার চালানোর জন্য ট্যাপ করেন তবে ইতিমধ্যে খোলা, সাম্প্রতিক অ্যাপ্লিকেশন তালিকা থেকে কোনও প্রতিক্রিয়া হবে না।

আমি সন্দেহ করি যে এর কারণ হ'ল সাম্প্রতিক অ্যাপ্লিকেশন তালিকাটি আপনার অ্যাপ্লিকেশানের একটি রেফারেন্স ধরে রেখেছে যা আপনি system.exit (0) ব্যবহার করে অ্যাপটি বন্ধ করে দেওয়ার কারণে অকার্যকর হয়ে উঠেছে। সমাপ্তি () ব্যবহার করে আপনার অ্যাপ্লিকেশনটির আরও সভ্যতার সমাপ্তি ওএসকে এমনভাবে অবহিত করেছিল যা এটির সাম্প্রতিক অ্যাপ্লিকেশন তালিকাটি রিফ্রেশ করার অনুমতি দিত, কিন্তু system.exit (0) দৃশ্যত এটি করে না।

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


কলিং ফিনিস () এর আগে আপনি সাম্প্রতিক অ্যাপস এন্ট্রিটি সরিয়ে ফেলতে পারেন ? সময় দেওয়ার সময় আমি এটি চেষ্টা করব। আমার কাছে একটি ছোট লঞ্চার ক্রিয়াকলাপের সাথে অগ্রভাগের পরিষেবা রয়েছে। ক্রিয়াকলাপটি খুব ছোট হওয়ায় এটি হত্যা এবং সমাহিত না করা হলে এটি কোনও বড় বিষয় নয়, তবে অ্যান্ড্রয়েডকে বলা সম্ভব হয় যে এটি সম্ভব হলে বিশ্রামের আগে এটি গ্রহণ করতে পারে।
nsandersen

9

আমি আশা করি সময়ের সাথে সাথে জিনিসগুলি পরিবর্তিত হবে। ওএসের মাধ্যমে অ্যাপটি প্রক্রিয়াটি সঠিকভাবে স্যান্ডবক্স করা থাকলে ব্যবহারকারীর কোনও অ্যাপ্লিকেশন বা প্রক্রিয়াটিকে হত্যা করতে সক্ষম হওয়া উচিত। একটি ধারণা রয়েছে যে অ্যাপসটি নিখুঁতভাবে লেখা উচিত বা ব্যবহারকারীরা কেবলমাত্র অ্যাপ্লিকেশনগুলি ব্যবহার করবেন যা সমস্ত এসডিকে সুপারিশ অনুসরণ করে। আমি মনে করি এটি একটি দীর্ঘ আদেশ order


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

7

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

সংক্ষেপে, আপনি ওএস থেকে বেরিয়ে আসতে পারবেন না বলে আপনি কেবল একটি স্ব-তৈরি শৈশবে রূপান্তরিত করেন।


2
ভাল ধারণা. তবে এমনকি কোনও ক্রিয়াকলাপ (বা পরিষেবা) শেষ করাও ওএস বন্ধ করে দেয় না। ওহ না, অনড্রেস্ট্রয় কার্যকর হওয়ার পরেও সমস্ত ভেরিয়েবল এবং স্টাফ এখনও রয়েছে। আমি কেবল দেখেছি যে কোনও পরিষেবাতে, ওয়েলিংয়েড একইভাবে অনড্রেস্ট্রয় বলা হয়েছিল ...
টেড

2
... এবং এভাবে System.exit (0) সাহায্য করেছে =)
টেড

7

অ্যাপ্লিকেশন বিকাশকারীকে তাদের নিজস্ব অ্যাপ্লিকেশনটি মেরে ফেলার জন্য একটি প্রস্থান ফাংশন ছাড়া এটি খুব খারাপ নকশা।

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


9
সর্বজনীন শূন্য অ্যাপেরস্টার্ট () tent ইনটেন্ট i = নতুন ইনটেন্ট (getBaseContext (), MyActivity.class); i.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity (ঝ); }
অ্যান্ড্রয়েড ওয়ার্কজ

2
এই উপরের মন্তব্যের কোডটি সত্যই ভাল কাজ করে। কমপক্ষে আপনি অ্যাপ থেকে সম্পূর্ণ প্রস্থানের পরিবর্তে প্রথম ক্রিয়াকলাপে যেতে পারেন। :)
হরপ্রীত

7

কোনও অ্যাপ বন্ধ করার জন্য FLAG_ACTIVITY_CLEAR_TOPইন্টেন্টে ফ্ল্যাগ ব্যবহার করুন এবং তারপরেsystem.exit();

বা অনুরূপ উপায় আছে, তবে system.exit()আপনি যখন এই পদ্ধতিতে কলটি ছাড়তে চান তখন ছাড়া :

public void exit() {
    startActivity(new Intent(this, HomeActivity.class).
    setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK).putExtra(EXIT_FLAG, true));
}

আপনার HomeActivity.onCreate()নিম্নলিখিত কোড যুক্ত করুন

protected void onCreate(Bundle savedInstanceState) {
    if (getIntent().getBooleanExtra(EXIT_FLAG, false)) {
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
            finish();
        }
    }
......................

এটি অ্যান্ড্রয়েডের জীবনচক্রটি না ভেঙে কাজ করবে।


7

প্রথমত, কখনও কখনও System.exit (0) ব্যবহার করবেন না। এ যেন এক ব্যক্তিকে মাথায় ঘুষি মারার মতো ঘুমানো!

দ্বিতীয়: আমি এই সমস্যার মুখোমুখি হয়েছি। আমার সমাধানটি ভাগ করে নেওয়ার আগে আমি আমার চিন্তাভাবনাগুলি ভাগ করতে চাই।

আমি মনে করি একটি "প্রস্থান বোতাম" বোকা। সত্যিই সত্যই বোকা। এবং আমি মনে করি যে ব্যবহারকারীরা (ভোক্তা) আপনার আবেদনের জন্য একটি প্রস্থান বোতামটি চেয়েছে তারাও বোকা। ওএস কীভাবে কাজ করছে এবং কীভাবে সংস্থানগুলি পরিচালনা করছে তা তারা বুঝতে পারে না (এবং এটি দুর্দান্ত কাজ করে)।

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

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

আমি প্রতিটি ক্রিয়াকলাপে সর্বদা দৃশ্যমান একটি বিকল্প মেনু তৈরি করেছি (আমি এটির একটি দুর্দান্ত ক্রিয়াকলাপ করি যা)।

যখন ব্যবহারকারী সেই বোতামটিতে ক্লিক করেন যা ঘটেছিল:

Intent intent = new Intent(this, DashBoardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

SharedPreferences settings = getSharedPreferences(getString(PREF_ID), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(FORCE_EXIT_APPLICATION, true);

  // Commit the edits!
editor.commit();
startActivity(intent);
finish();

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

সুতরাং আমার ড্যাশবোর্ড ক্রিয়াকলাপে আমি অন পদ্ধতিতে এই পদ্ধতিটি চালাই:

private void checkIfForceKill() {

    // CHECK IF I NEED TO KILL THE APP

    // Restore preferences
    SharedPreferences settings = getSharedPreferences(
            getString(MXMSettingHolder.PREF_ID), Context.MODE_PRIVATE);
    boolean forceKill = settings.getBoolean(
            MusicSinglePaneActivity.FORCE_EXIT_APPLICATION, false);

    if (forceKill) {

        //CLEAR THE FORCE_EXIT SETTINGS
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean(FORCE_EXIT_APPLICATION, false);

        // Commit the edits!
        editor.commit();

        //HERE STOP ALL YOUR SERVICES
        finish();
    }
}

এবং এটি বেশ ভাল কাজ করবে।

কেবলমাত্র এটিই কেন ঘটছে তা আমি বুঝতে পারি না এটি হ'ল যখন আমি শেষ সমাপ্তি করি (এবং আমি পরীক্ষা করেছি: এটি অনপস ause অনটপ → অনডাস্ট্রয়ের সমস্ত সঠিক প্রবাহ অনুসরণ করছে) অ্যাপ্লিকেশনটি এখনও সাম্প্রতিক ক্রিয়াকলাপে রয়েছে (তবে এটি ফাঁকা)

দেখে মনে হচ্ছে সর্বশেষতম অভিপ্রায় (এটি ড্যাশবোর্ডঅ্যাক্টিভিটি শুরু করেছে) এখনও সিস্টেমে রয়েছে।

এটি অপসারণ করতে আমাকে আরও খনন করতে হবে।


8
কোনও ভোক্তা জানেন না যে কোনও ওএস কীভাবে কাজ করে তা কী একা ছেড়ে দেওয়া হয়, এটি তাদের বোকা করে না। প্রস্থান / প্রস্থান / অফ বোতামটি চাওয়া তাদের স্বাভাবিক করে তোলে। যখন আপনি একটি ঘর ছেড়ে যান তখন আপনি লাইট বন্ধ করেন, আরও গুরুত্বপূর্ণটি হল আপনি যখন আপনার বাড়িটি ছেড়ে যান তখন আপনি দরজাটি লক করেন এবং এখানেই আমি কোনও প্রোগ্রামকে সঠিকভাবে প্রস্থান করতে অক্ষমতার সাথে সমস্যাটি দেখি। পটভূমিতে প্রোগ্রামটি জীবিত রেখে দেওয়া বড় নিরাপত্তার ঝুঁকি।
স্কিগগলস

4
"আমি মনে করি একটি" প্রস্থান বোতাম "বোকা"। বেশিরভাগ সফ্টওয়্যার অ্যাপ্লিকেশনগুলি একটি প্রস্থান বোতাম সরবরাহ করে।
ইগোরগানাপলস্কি

আপনি "// এখানে আপনার সমস্ত পরিষেবা বন্ধ করুন" বলেছিলেন এবং তারপরে সমাপ্তি () ব্যবহার করেছেন। অ্যান্ড্রয়েড পরিষেবাদিগুলির একটি ফিনিস () পদ্ধতি নেই। তাদের আনবাইন্ড সার্ভিস (এমকনেকশন) রয়েছে;
ইগোরগানাপলস্কি

@ স্যুইগগলস আপনার যদি এমন একটি ঘর থাকে যা স্বয়ংক্রিয়ভাবে তার সমস্ত আলো বন্ধ করে দেয় এবং আপনি চলে যাওয়ার সময় আপনার দরজাটি লক করে রাখেন, আপনাকে এটিকে যত্ন নেওয়ার দরকার নেই।
সেশু বিনয়

7

অ্যান্ড্রয়েড অ্যাপ্লিকেশন লাইফ চক্র কম্পিউটার ব্যবহারকারীর জন্য নয়, মোবাইল ফোন ব্যবহারকারীদের জন্য ডিজাইন করা হয়েছে।

অ্যাপ্লিকেশন লাইফ-চক্রটি লিনাক্স সার্ভারকে গ্রাহক উপকরণে পরিণত করার জন্য নির্মমভাবে সরলতার দৃষ্টান্ত।

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

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

যেহেতু এটি স্ট্যাক ওভারফ্লো, তাই যে কেউ এটি পড়ছেন তিনি একজন কম্পিউটার ব্যবহারকারী এবং মোবাইল অ্যাপ লাইফাইসাইকেলটি বুঝতে তাদের 90% জ্ঞান বন্ধ করতে হবে।


আমি আপনার লিপটিকে "কম্পিউটার ব্যবহারকারীদের 90% জ্ঞান বন্ধ করে দিতে হবে" তে অনুসরণ করি না। হ্যাঁ, রোমেন গাই যা বলেছেন, কিন্তু এটি সত্য করে তোলে না। আমার কাছে মনে হয় "কম্পিউটার ব্যবহারকারীর জন্য উন্নত বিকল্পসমূহ" বিভাগ, "ছাড়" বোতামের সাথে প্রত্যেকের প্রয়োজন পূরণ করবে।
ডন হ্যাচ

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

6

একটি অর্ধ-যথাযথ অ্যান্ড্রয়েড অ্যাপ্লিকেশন জীবনচক্র বাস্তবায়নের চেয়ে এই প্রশ্নোত্তরটি পড়তে আমার বেশি সময় লেগেছে

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

ক্রিয়াকলাপের সময়কালের জন্য জিনিসগুলি সেট আপ করার জন্য আমি অনক্রিটে কিছু প্রাথমিক কোড করেছি, যার মধ্যে রয়েছে checkUpdate.start();:

...

@Override
public void onStart() {
    super.onStart();
    isRemote = true;
    checkUpdate.resume();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, luh);
}

@Override
public void onPause() {
    isRemote = false;
    checkUpdate.suspend();
    locationManager.removeUpdates(luh);
    super.onStop();
}

এই কোডটি সম্পূর্ণ ভুল হতে পারে, তবে এটি কার্যকর হয়। এটি আমার প্রথম অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির মধ্যে একটি।

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


অনপেজ পদ্ধতি থেকে আপনার সুপার.অনস্টপ কল করা উচিত নয় .. এটি মনে হচ্ছে এটি প্রধানত জিনিসগুলি স্ক্রু করে দেবে।
ম্যাট ওল্ফ

1
20 বা ততোধিক দার্শনিক উত্তরগুলি পড়ার পরে যা কিছু কোড থাকার জন্য প্রশ্নটি ডিড করে দেয় .... +1।
পেসারিয়ার

6

প্রতিবার যখন আপনি পরবর্তী পৃষ্ঠায় অভিপ্রায় মাধ্যমে যান, তখন ব্যবহার করুন:

`YourActivityname.this.finish()`;

উদাহরণ:

Intent intent = new Intent(getApplicationContext(), SMS.class);

startActivity(intent);
MainActivity.this.finish();

যাতে কোনও কার্যকলাপ পটভূমিতে চলতে না পারে এবং আপনি যখন নিজের অ্যাপ থেকে প্রস্থান করতে চান তখন ব্যবহার করুন:

MainActivity.this.finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
getParent().finish();

এই প্রস্থানটি আমার জন্য কবজির মতো কাজ করেছে :)


1
এটি অ্যাপটি প্রস্থান করে না পরিবর্তে এটি মাইন্যাকটিভিটিতে আসে।
শরথ

1
তবে সাবধানতা অবলম্বন করুন - অনপজ () কিলপ্রসেস এবং সিস্টেম.এক্সিটের ক্ষেত্রে ডাকা হয় না। এটি নিয়ে আমাদের কিছু সমস্যা ছিল।
পাভেল বিরিয়ুকভ

4

যাই হোক না কেন, আপনি যদি নিজের আবেদনটি শেষ করতে চান তবে সর্বদা কল করতে পারেন System.exit(0);


5
System.exit()যদি আপনার স্ট্যাকে একাধিক কার্যকলাপ থাকে তবে আপনার অ্যাপ্লিকেশনটিকে হত্যা করবে না kill কোনও Android বিকাশকারী যিনি এটি ব্যবহার করেন এটি বেসিক অ্যান্ড্রয়েড অ্যাপ লাইফ-চক্রটি বুঝতে পারে না। এই উত্তর পড়ুন ।
ধীররাজ ভেকাকোমা


2
আসলে, System.exit () আপনার অ্যাপ্লিকেশনটিকে হত্যা করে । তবে, যদি সিস্টেম.এক্সিট () কে মূল ক্রিয়াকলাপ বাদে অন্য কোথাও থেকে কল করা হয়, অ্যান্ড্রয়েড স্ট্যাকের সাথে আরও একটি কম ক্রিয়াকলাপ দিয়ে অ্যাপটি পুনরায় চালু করবে। আমার কাছে এটি পরিষ্কার ইচ্ছাকৃত System.exit এর কাছে একটি হাস্যকর প্রতিক্রিয়া বলে মনে হচ্ছে। আমি বোঝাতে চাইছি এটি যদি ডিভ0 বা কিছু অনিচ্ছাকৃত ক্র্যাশ হয়ে থাকে তবে এটি পুনরায় আরম্ভ করা ভদ্র হবে। তবে এগুলি আমার স্মরণ হিসাবে অটো পুনরায় আরম্ভের কারণও নয়। কিন্তু যাই হোক, অ্যাপ্লিকেশন হয় হত্যা করে। এটি আবার চালু করা যেতে পারে, তবে এর অর্থ এই নয় যে এটি হত্যা করা হয়নি।
জেসি গর্ডন

3

যদি আপনার 10,20 হয় .. একাধিক ক্রিয়াকলাপ চলছে এবং আপনি সেগুলি শেষ করে সিস্টেম থেকে প্রস্থান করতে চান।

application classবা একটিতে স্ট্যাটিক অ্যারে তৈরি করুনconstants class.

ধ্রুবক

public class Constants {

public static ArrayList<Activity> activities = new ArrayList<Activity>();

}

প্রধান ক্রিয়াকলাপ এই অ্যারেতে বর্তমান ক্রিয়াকলাপের রেফারেন্স যুক্ত করুন

activity = MainActivity.this; Constants.activities.add(activity);

public class MainActivity extends Activity {

    private ImageView imageButton;
    private Activity activity;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        activity = MainActivity.this;
        Constants.activities.add(activity);

        imageButton = (ImageView) findViewById(R.id.camera);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // existing app.
                if (Constants.activities != null) {
                    for (int i = 0; i < Constants.activities.size(); i++) {
                        Activity s = Constants.activities.get(i);
                        s.finish();
                    }
                }
                //super.finish();
                finish();
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
            }
        });
    }
}

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