কোনও অ্যাপ্লিকেশনটিকে পটভূমিতে চলতে বাধ্য করার কোনও উপায় নেই তা যাই হোক না কেন?


12

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

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

ওএসের স্মৃতিশক্তি শেষ হয়ে গেলেও কী কোনও অ্যাপকে পটভূমিতে চলতে বাধ্য করার কোনও উপায় আছে?


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

উত্তর:


8

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

http://repo.xposed.info/module/de.robv.android.xposed.installer

http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings

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


একটি নোট করা উচিত, এটির মূল প্রয়োজন এবং এটি একটি ভারী অ্যান্ড্রয়েড ওএস সংশোধন ইনস্টলেশন।
সুইজারবার.দেব

5

সরল উত্তর: নং অ্যান্ড্রয়েড সর্বদা ওম ব্যবহার করে না (অপ্রচলিত স্মৃতি) অব্যবহৃত মেমরিটিকে অগ্রাধিকার দেয়। আপনি কিছু টাস্ক ম্যানেজারের সাথে অ্যাপ্লিকেশনগুলির অগ্রাধিকারগুলি (কমপক্ষে রিবুট হওয়া পর্যন্ত) পরিবর্তন করতে পারেন তবে স্মৃতিশক্তি কম চলতে থাকলেও পটভূমির অ্যাপ্লিকেশনগুলি মারা যেতে শুরু করে।

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

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


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

1
@ অনিক একটি বাফার ওভারফ্লো হগিং মেমরির সাথে কোনও সম্পর্ক নেই। আপনি কি জানেন যে একটি বাফার ওভারফ্লো কি?

3
@ অনিক তাই উত্তরটি হ'ল না, আপনি জানেন না যে একটি বাফার ওভারফ্লো কী। বুঝেছি.

1
লিঙ্কযুক্ত তালিকার অনীক লুপটি @ অনিক অবশ্যই আপনাকে লুপ করার আগে অনেক আগে অবশ্যই আপনাকে একটি OOM এ চালাতে পারে Integer.MAX_VALUE। আপনি কেন মনে করেন যে Integer.MAX_VALUEকোনওভাবেই জিনিসগুলি সীমাবদ্ধ ?

1
@ অনিক সঠিক: সংজ্ঞা অনুসারে, একটি বাফার ওভারফ্লো বরাদ্দ হওয়া মেমরির আকারটি প্রসারিত করতে পারে না। যদি এটি বরাদ্দ মেমরির আকারটি প্রসারিত করে তবে এটি কোনও বাফার ওভারফ্লো নয়। আপনি অসীম লুপের কথা ভাবছেন, আমি মনে করি।
মাকিং হাঁস

1

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


1
অগ্রভাগ অগ্রাধিকার (কারণেই বিজ্ঞপ্তি প্রয়োজন) এর সাথে অকারণে অ্যাপ্লিকেশন চালানো খারাপ অভ্যাস হিসাবে বিবেচিত হয়। যেমনটি আগেই বলা হয়েছে: অ্যান্ড্রয়েড একটি দুর্দান্ত এপিআই সরবরাহ করে যা এমনকি টাইমস / কাউন্টারগুলিকে মঞ্জুরি দেয় যা OOM ঘাতক দ্বারা প্রভাবিত হয় না। একটা চমৎকার পোস্ট দায়ানি Hackborn দ্বারা এই বিষয় সম্পর্কে হয়
ফ্লো

আমি সন্দেহ করি না যে এরকম একটি এপিআই রয়েছে, তবে এই প্রশ্নে আগে এর আগে উল্লেখ করা হয়েছে কোথায়?
এরিক

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

4
ঠিক কোনও টাইমারের কারণে কোনও অ্যাপ চালু রাখার কোনও কারণ নেই। টাইমার তথ্য সহ অ্যাপ্লিকেশন স্থিতিটি ব্যবহার করুন onSaveInstanceStateএবং onRestoreInstanceStateসুরক্ষিত করুন। ফরগ্রাউন্ডে চালানোর দরকার নেই। এমনকি যদি এটি অ্যালার্ম হয় তবে আপনি AlarmManagerএটি নির্বাহ করা হয়েছে কিনা তা নিশ্চিত করতে ব্যবহার করতে পারেন। ফরগ্রাউন্ডটি ব্যবহার করার একমাত্র কারণ হ'ল: 1. আপনার কাছে কিছু আসল অগ্রভাগের ক্রিয়াকলাপ চলছে, যেমন গান বাজাতে বা ভিডিও দেখা like ২. আপনি কোনও ডেটা সংযোগটি উন্মুক্ত রাখতে চান (যেমন IMAP IDLE (পুশ))।
ফ্লো

0

1 ম পদ্ধতি: - আপনি যদি প্রোগ্রামটিতে স্টিকি থ্রেড তৈরি করেন তবে হ্যাঁ আপনি জোর করে আপনার প্রোগ্রামটি চালিয়ে যেতে পারেন। তবে মনে রাখবেন উন্নত সেটিং মোডে ব্যবহারকারী ব্যাকগ্রাউন্ড চলমান অ্যাপগুলিকে থামাতে পারে। তবে আপনি যদি কোনও স্টিকি থ্রেড এমনভাবে লিখেন যে কোনও ঘটনা ঘটতে শুরু হয়ে যায় তবে এটি অর্জন করা যায়।

২ য় পদ্ধতি: যদি ব্যবহারকারী অ্যান্ড্রয়েড অবিহীন হয় এবং আপনি ব্যাকগ্রাউন্ডে একটি অ্যাপ্লিকেশন চালাতে চান। ব্যাকগ্রাউন্ডে এসএল 4 স্ক্রিপ্ট ব্যবহার করুন অ্যাপটি তৈরি করুন। এমন একটি স্ক্রিপ্ট ব্যবহার করুন যা আপনাকে ব্যাকগ্রাউন্ড চেক এবং প্রোগ্রাম করবে এবং অন্য কিছু দেখানোর জন্য সামনে প্রান্তটি লিখবে।

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

*** TYPO এর জন্য দুঃখিত .. বানান চেকার উপলভ্য নয়। আশা করি আপনি যা অর্জন করতে চেয়েছিলেন তা অর্জন করবেন।


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

-1

অ্যাপটি লক করার জন্য মাঝে মধ্যে একটি বিকল্প রয়েছে । এটি ফোনে সেই অ্যাপ্লিকেশনটিকে হত্যা বা বন্ধ করতে বাধা দেয় ।

লক বিকল্পটি ওএসে পাওয়া যায় না, কিছু তৃতীয় পক্ষের অ্যাপ্লিকেশন যেমন জিও টাস্ক ম্যানেজার ইত্যাদি ব্যবহার করে সহায়তা করতে পারে।


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