অ্যাপ্লিকেশনউলএন্টারফোরগ্রাউন্ড বনাম অ্যাপ্লিকেশনডিডকোম্যাকটিভ, অ্যাপ্লিকেশনউইল ডিজাইনঅ্যাকটিভ বনাম অ্যাপ্লিকেশনডিন্টারব্যাকগ্রাউন্ড


215

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

অ্যাপ্লিকেশন উইলএন্টারফোরগ্রাউন্ড বনাম অ্যাপ্লিকেশনডিবোকোম্যাকটিভ - পার্থক্য কী?

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

অ্যাপ্লিকেশনউইলসাইনঅ্যাকটিভ বনাম অ্যাপ্লিকেশনডিন্টারব্যাকগ্রাউন্ড - পার্থক্য কী?

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

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

ধন্যবাদ

উত্তর:


449

ঘুম থেকে ওঠার সময় অ্যাপ্লিকেশন পুনরায় চালু করার সময় (হয় স্প্রিংবোর্ড, অ্যাপ স্যুইচিং বা URL এর মাধ্যমে) applicationWillEnterForeground:বলা হয় called অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে রাখার পরে, যখন ব্যবহারের জন্য প্রস্তুত হয়ে যায় তখন একবার এটি কার্যকর করা হয়, যখন applicationDidBecomeActive:লঞ্চ হওয়ার পরে একাধিকবার ডাকা হতে পারে। এটি applicationWillEnterForeground:সেটআপের জন্য আদর্শ করে তোলে যা পুনরায় লঞ্চের পরে একবারই হওয়া দরকার।

applicationWillEnterForeground: বলা হয়:

  • অ্যাপ্লিকেশন পুনরায় চালু করা হয় যখন
  • আগে applicationDidBecomeActive:

applicationDidBecomeActive: বলা হয়:

  • অ্যাপ্লিকেশন পরে প্রথম চালু করা হয় application:didFinishLaunchingWithOptions:
  • applicationWillEnterForeground:যদি হ্যান্ডেল করার কোনও URL না থাকে after
  • পরে application:handleOpenURL:বলা হয়।
  • পরে applicationWillResignActive:তাহলে ব্যবহারকারী উপেক্ষা একটি ফোন কল বা SMS মত বাধা।

applicationWillResignActive: বলা হয়:

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

applicationDidEnterBackground: বলা হয়:

  • পরে applicationWillResignActive:
  • ডক্স বলছে আপনার উচিত:
    • ভাগ করা সংস্থানগুলি ছেড়ে দিন release
    • ব্যবহারকারীর ডেটা সংরক্ষণ করুন
    • অবৈধ টাইমার
    • অ্যাপ্লিকেশন স্থিতি সংরক্ষণ করুন যাতে অ্যাপটি বন্ধ হয়ে গেলে আপনি এটিকে পুনরুদ্ধার করতে পারেন।
    • ইউআই আপডেটগুলি অক্ষম করুন
  • আপনার যা দরকার তা করতে আপনার কাছে 5 সেকেন্ড থাকতে হবে এবং পদ্ধতিটি ফিরে আসতে হবে
    • আপনি যদি ~ 5 সেকেন্ডের মধ্যে ফিরে না আসেন তবে অ্যাপটি সমাপ্ত হবে ated
    • আপনি আরও সময় চাইতে পারেন beginBackgroundTaskWithExpirationHandler:

সরকারী ডকুমেন্টেশন।


10
আরও একটি জিনিস যোগ করা। যদি আপনি আপনার অ্যাপ্লিকেশন থেকে ব্যাকগ্রাউন্ড অ্যাপ্লিকেশন তালিকাটি খোলেন (হোম বোতামে ডাবল ক্লিক করুন) এবং তারপরে ফিরে আসুন (আপনার অ্যাপ্লিকেশনটির পূর্বরূপ চয়ন করুন) - কেবল কল করা -applicationWillEnterForeground:হবে না, কেবল -applicationDidEnterBackground:(ধরা যাক, আইওএস মনে হয় না যে এটি পুনরায় চালু হবে)।
কেপাওয়ার

@ কেপাওয়ার হ্যাঁ, এটি কেবল আমার ঘাড়টি ভেঙে দিয়েছে ... কখনও ভাবিনি যে উইলএন্টারফোরগ্রাউন্ড সেই ক্ষেত্রে ডাকা হবে না ...
থেই

এটি কি applicationWillEnterForeground:পটভূমি থেকে সম্মুখভাগে প্রতিবার ডাকা হবে না ?! applicationDidBecomeActiveপরে এমনটি বলা হয় না এমন কোনও মামলা আমি খুঁজে পাচ্ছি না ।
ডেসমন্ড ডিএআই

এটি সঠিক নয়। অ্যাপ্লিকেশনউইলসাইনঅ্যাক্টিভকে অ্যাপ্লিকেশন ছাড়াই কল করা যেতে
পারেডিডেন্টারব্যাকগ্রাউন্ড

27

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    /*
     Sent when the application is about to move from active to inactive state. 
     This can occur for certain types of temporary interruptions (such as an 
     incoming phone call or SMS message) or when the user quits the application 
     and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down 
     OpenGL ES frame rates. Games should use this method to pause the game.
     */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    /*
     Use this method to release shared resources, save user data, invalidate 
     timers, and store enough application state information to restore your 
     application to its current state in case it is terminated later. 
     If your application supports background execution, this method is called 
     instead of applicationWillTerminate: when the user quits.
     */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    /*
     Called as part of the transition from the background to the active state; 
     here you can undo many of the changes made on entering the background.
     */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the 
     application was inactive. If the application was previously in the 
     background, optionally refresh the user interface.
     */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    /*
     Called when the application is about to terminate.
     Save data if appropriate.
     See also applicationDidEnterBackground:.
     */
}

আরও বিশদ ব্যাখ্যার জন্য, দয়া করে ইউআইএপ্লিকেশনডেলিগেটের জন্য অফিসিয়াল ডকুমেন্টটি দেখুন


লিঙ্কটি মারা গেছে।
ফিলিপ্পি বোসমান

আপাতত 2019 এর জন্য কিছু বর্ণনা এবং লিঙ্কগুলি সংশোধন করুন।
tomjpsun

13

ড্যানোর জবাব নিয়ে আমি তখনও কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম তাই আমার রেফারেন্সের জন্য নির্দিষ্ট পরিস্থিতিতে ইভেন্টের প্রবাহটি পেতে একটু পরীক্ষা করেছিলাম, তবে এটি আপনার পক্ষেও কার্যকর হতে পারে। এটি এমন অ্যাপ্লিকেশানগুলির জন্য যা UIApplicationExitsOnSuspendতাদের তথ্য.পুলিস্টিতে ব্যবহার করে না। এটি আইওএস 8 সিমুলেটর + আইওএস 7 ডিভাইসের সাথে নিশ্চিত হওয়াতে পরিচালিত হয়েছিল। দয়া করে জামারিনের ইভেন্ট হ্যান্ডলারের নামগুলি ক্ষমা করুন। তারা খুব অনুরূপ।

  • একটি চলমান রাজ্য থেকে প্রাথমিক এবং পরবর্তী সমস্ত লঞ্চ:

FinishedLaunching

OnActivated

  • বাধা (ফোন কল, শীর্ষ স্লাইড-ডাউন, নীচে স্লাইড-আপ):
  • হোম বোতামটি নিষ্ক্রিয় অ্যাপ্লিকেশনগুলির তালিকা ডাবল-চাপুন, তারপরে আমাদের অ্যাপ্লিকেশনটিকে পুনরায় অনুসন্ধান করুন:

OnResignActivation


OnActivated

  • হোম বোতামটি নিষ্ক্রিয় অ্যাপ্লিকেশনগুলির তালিকা ডাবল-প্রেস করে, অন্য একটি অ্যাপ্লিকেশন নির্বাচন করে, এবং আমাদের অ্যাপ্লিকেশনটি পুনরায় চালু:
  • হোম বোতাম একক প্রেস, তারপরে পুনরায় লঞ্চ করুন:
  • লক করুন (চালু / বন্ধ বোতাম), তারপরে আনলক করুন:

OnResignActivation

DidEnterBackground


WillEnterForeground

OnActivated

  • হোম বোতামটি ডাবল-টিপুন এবং আমাদের অ্যাপ্লিকেশনটি সমাপ্ত করুন: (পরবর্তী পুনরায় লঞ্চটি প্রথম ক্ষেত্রে)

OnResignActivation

DidEnterBackground

ডিডেন্টারব্যাকগ্রাউন্ড (কেবলমাত্র আইওএস 7?)

হ্যাঁ, DidEnterBackgroundআইওএস 7 ডিভাইসে দু'বার কল করা হয়। উভয় সময় ইউআইএপ্লিকেশন রাষ্ট্রটি পটভূমি। তবে আইওএস 8 সিমুলেটরটি তা করে না। আইওএস 8 ডিভাইসে এটির পরীক্ষা করা দরকার। আমি আমার উত্তরটি আপডেট করব যখন আমি এতে হাত দিই বা অন্য কেউ নিশ্চিত হতে পারে।


9

applicationWillEnterForeground বলা হয়:

যখন অ্যাপ পুনরায় চালু করা হয় (পটভূমি থেকে সম্মুখভাগে আসে) প্রথমবার অ্যাপ্লিকেশন শুরু করার সময় যখন applicationDidFinishLaunchডাকা হয় তবে কেবল যখন ব্যাকগ্রাউন্ড থেকে আসে তখনই এই পদ্ধতিটি চালু করা হয় নাapplicationDidBecomeActive

applicationDidBecomeActive বলা হয়

কোনও অ্যাপলিকেশন হ্যান্ডেল করার কোনও URL না থাকলে তার didFinishLaunching পরে যখন প্রথম চালু করা হয় applicationWillEnterForeground। পরে application:handleOpenURL:বলা হয়। পরে applicationWillResignActiveতাহলে ব্যবহারকারী উপেক্ষা একটি ফোন কল বা SMS মত বাধা। অ্যাপ্লিকেশন থেকে যে কোনও জায়গায় সতর্কতা দেখুন অদৃশ্য হওয়ার পরে


আপনি কি কোনও সুযোগেই জানেন যে এটি আইওএস 7 হিসাবে পরিবর্তিত হয়েছিল? আমি মনে করি (আমি ভুল হতে পারি) অ্যাপ্লিকেশন উইলএন্টারফোরগ্রাউন্ডে স্টাফ (আইওএস 5/6) করছেন এবং অ্যাপ্লিকেশনটি প্রথম যখন চালু হয়েছিল তখন সেই চালানো হয়েছিল। এখন পর্যন্ত, 7.1 / 8 এ, আপনি সঠিক অ্যাপ্লিকেশনউইলএন্টারফোরগ্রাউন্ড লঞ্চের জন্য কল পাবেন না।
Jinyoung Kim

7

সিস্টেম যখন অনুমতি চাইবে তখন অ্যাপ্লিকেশনউইলজিইনএ্যাকটিভকে ডাকা হয়। (আইওএস 10 এ)। যদি কেউ আমার মতো একই সমস্যায় পড়ে ...


অনুমতি পপ বরখাস্ত করার পরে কোন পদ্ধতি বলতে ডাকে কোন ধারণা? আমার কাছে এই সমস্যাটি স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / 26059927/… আছে
সুরেশ Durishetti

5

আইওএস 8+ এ ফোন কল নেওয়ার জন্য একটি সূক্ষ্ম তবে গুরুত্বপূর্ণ পার্থক্য রয়েছে।

আইওএস In-তে যদি ব্যবহারকারী উভয়ই ফোন কল গ্রহণ করে তবেই অ্যাপ্লিকেশনআলিজাইনঅ্যাকটিভ: এবং অ্যাপ্লিকেশনডিডনটারব্যাকগ্রাউন্ড: কল করা হয়। তবে আইওএস 8+ এ কেবল অ্যাপ্লিকেশনউইলরিজাইনএ্যাকটিভ: ডাকা হয়।


1

আইওএস 13+ এর জন্য নিম্নলিখিত পদ্ধতিগুলি কার্যকর করা হবে:

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