software - android windows




একটি আবেদন frowned উপর ছেড়ে দেওয়া হয়? (20)

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

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

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

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

ব্যবহারকারী যদি একটি অ্যাপ্লিকেশন কমিয়ে আনতে চায় তবে সেরা জিনিসটি হ্রাস করা হয়। একটি ব্যবহারকারী একটি অ্যাপ্লিকেশন থেকে প্রস্থান করতে চায়, তাহলে সব উপায়ে এটি প্রস্থান করা ভাল।

এটা কি ভাঙা? এটা অ্যান্ড্রয়েড এর ভিউ - তারা এটি উপর frown। এবং অনেক অনেক স্বাধীন রুকি অ্যান্ড্রয়েড বিকাশকারী এটি উপর frown।

কিন্তু যখন এটি সঠিকভাবে আসে, সেখানে ভাল কোডিং এবং খারাপ কোডিং আছে। ভাল প্রোগ্রাম প্রবাহ মডেল আছে এবং খারাপ প্রোগ্রাম প্রবাহ মডেল আছে।

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

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

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

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

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

অ্যান্ড্রয়েড শিখতে আমার প্রচেষ্টা চলন্ত, আমি শুধু নিম্নলিখিত পড়া :

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

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

হেই, আমি অ্যান্ড্রয়েড জগতের প্রতিটি ধাপে যাচ্ছি, আমি কোন ধরণের সমস্যা চালায় = (

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

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

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

সত্যিই আমার আবেদন করার জন্য একটি উপায় আছে?


Ted, আপনি কি অর্জন করার চেষ্টা করছেন, সম্ভবত আপনি ঠিক কিভাবে এটা চিন্তা করছেন না।

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


একটি একক অ্যাপ্লিকেশন হিসাবে আপনার আবেদন চিন্তা বন্ধ করুন। এটি UI স্ক্রীনের একটি সেট যা ব্যবহারকারী আপনার "অ্যাপ্লিকেশন" এবং "ফাংশন" এর মাধ্যমে Android পরিষেবাদির মাধ্যমে সরবরাহ করতে পারে।

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

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

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

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


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

উদ্ধৃতাংশ:

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

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

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

সমাধান আপনি ফিরে প্রস্থান বাটন আশা করি ফিরে বাটন আচরণ করা হয়। উন্নততর, অ্যাপ্লিকেশনটি দৃশ্যমান না হওয়া পর্যন্ত কেবল সংস্থানগুলি বন্ধ করা বন্ধ করুন।

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


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

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

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

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

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

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

ব্যবহারকারী যে বাটন ক্লিক করে এই কি ঘটবে:

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();
    }
}

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

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

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

আমি এটা মুছে ফেলার জন্য আরো খনন করতে হবে।


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

অ্যাপ্লিকেশন লাইফ-চক্র একটি লিনাক্স সার্ভারকে একটি ভোক্তা অ্যাপ্লায়েন্সে চালু করার জন্য নিষ্ঠুরভাবে সরল রূপান্তরিত।

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

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

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


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

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


আপনি যদি আপনার ডেটা / সংযোগগুলি (এবং যার ফলে আপনার "অ্যাপ্লিকেশন") অবিরত করে ফেলতে ব্যর্থ হন তবে আপনি Android এর সাথে যা করতে চান তা করতে আপনি সক্ষম হবেন না।

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

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


আসলে এটি একটি আধা-সঠিক Android অ্যাপ্লিকেশন লাইফ সাইকেল বাস্তবায়নের চেয়ে এই প্রশ্ন ও উত্তরটি পড়তে আমাকে আরও বেশি সময় লেগেছে।

এটি একটি জিপিএস অ্যাপ্লিকেশন যা পয়েন্টের জন্য ভোট দেয় এবং থ্রেড ব্যবহার করে প্রতি কয়েক সেকেন্ডে একটি ওয়েবসেসে বর্তমান অবস্থান প্রেরণ করে ... এটি একটি আপডেটের জন্য টেডের ক্ষেত্রে প্রতি 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();
}

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

Voilà, এটি একটি অ্যাপ্লিকেশন যা পটভূমিতে CPU ব্যবহার করে না সেটি পুনরায় চালু করার জন্য তাৎক্ষনিকভাবে প্রস্তুত হয় কারণ এটি RAM তে (যদিও র্যামটিকে Android লাইফ সাইকেল হিসাবে ধারণ করা হয় না) ... একটি অ্যাপ্লিকেশন সর্বদা প্রস্তুত, এটি একটি ফোন , ছেলেরা / gals। যদি কোনও অ্যাপ্লিকেশনটি সমস্ত RAM ব্যবহার করে এবং ওএস দ্বারা বন্ধ করা যায় না তবে জিনিসটি রিংিং বন্ধ হতে পারে = P তাই এটি আপনার পটভূমিতে থাকা অ্যাপ্লিকেশানটি বন্ধ করতে সক্ষম হওয়া দরকার (যদি আপনার অ্যাপ্লিকেশন isn একটি রিসোর্স হগ না এটি BTW বন্ধ করা হবে না), তাই আসুন ভাল অ্যাপ্লিকেশন লিখুন।


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

  • আপনি আপনার আবেদন সঙ্গে কাজ করছেন
  • ফোন রঞ্জিত
  • আপনি কল গ্রহণ
  • কল শেষে, আপনি একই জায়গায় আপনার আবেদনটিতে ফিরে আসেন

এটি করার জন্য, আপনার কেবল Backবোতাম বা Homeআপনার ফোনের বাটন (ছোট বা লম্বা প্রেসের মাধ্যমে) এবং বিজ্ঞপ্তি বারটি প্রয়োজন।

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

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

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

সুতরাং অ্যাপ্লিকেশনটির সম্পূর্ণ ধারণাটি "অ্যাপ্লিকেশন-কাজ-প্রস্থান অ্যাপ্লিকেশনটি প্রবেশ করান" -র উপর কিছু নির্ভর করে।


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


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

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

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

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

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

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

System.exit সংক্রান্ত (0):

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

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

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

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


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

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

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

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


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

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

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


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


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


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

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

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

Standard android.app. অ্যাপ্লিকেশন ক্লাস থেকে উত্তরাধিকারী করে আপনার নিজের Android অ্যাপ্লিকেশন ক্লাস তৈরি করুন (AndroidManifest.xml ফাইলটিতে এটি ঘোষণা করার কথা মনে রাখুন)।

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

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

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

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

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

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

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





android