Ios жизненный цикл приложения: iOS Application Lifecycle, жизненный цикл iOS приложения – Жизненый цикл приложения iOS

iOS Application Lifecycle, жизненный цикл iOS приложения

Жизненный цикл ios приложения — обширная и сложная тема. Но как всегда для наших читателей в этой статье будет изложено максимально понятное и наглядное описание процесса жизненного цикла iOS предложения.

AplicationLifeCycle_proSwift_ru

Можно в поисковике набрать iOS Application Lifecycle и вы увидите много диаграмм (сложных и не очень), в которых разобраться без пол-литра не получится. Также будет и рисунок, который представлен выше. Эта диаграмма взята их лекций Stanford University, посвященных разработке iOS приложений, но тут она переведена на русский язык.

Давайте разбираться что, зачем и почему…

На самом деле, когда пользователь запускает  приложение на устройстве, работает в нем, сворачивает в фон, запускает другое приложение, выгружает его из памяти, само приложение посылает сообщения классу appDelegate, в котором можно эти сообщения поймать и обработать. Также следует понимать, что помимо вызовов методов из класса  appDelegate, происходит посыл сообщения NSNotificationCenter с соответствующим содержанием для каждого из состояний приложения.

Обработка событий из различных этапов жизненного цикла iOS приложений очень похожа на обработку событий жизненного цикла View Controller. Т.е. нужно понимать в какой момент какой метод вызывается и что в этот момент времени уже «проинициализировалось», — с чем мы можем в данный момент работать.

Сначала приложение не запущенно. Потом пользователь запускает приложение. Оно переходит в состояние в состояние Foreground, в котором приложение становится сначала Iactive —  на этом этапе выполняется код программы, но не обрабатываются события интерфейса пользователя (интерфейс не отображается, касания не обрабатываются и.т.п.). Затем переходит в этап Active, в котором выполняется код и обрабатываются все события UI.

Если пользователь запустит другое приложение, то текущее приложение перейдет в состояние Inactive и затем в состояние Background. В этом состоянии коды выполняется ограниченное время, и не обрабатываются события UI. Нужно понимать, что именно в этом состоянии можно заставить приложения получить, допустим, из интернета самые свежие обновления чего либо, и дать их приложению, что бы когда пользователь вернул приложение в 

Foreground он мог увидеть эту информацию.

После весьма короткого состояния Background  приложение переходит в состояние Suspended. В этом состоянии код не выполняется вовсе и система может убить приложение для освобождения памяти, если оно потребуется.

Теперь о методах AppDelegate, которые вызываются во время работы приложения и перехода из одного состояния в другое.

Успешный запуск приложения

Вызывается метод:

//
// proSwift.ru
//
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    return true
}

Также происходит оповещение с именем

UIApplicationDidFinishLaunchingNotification

На схеме это стрелка №1

Переключение на другое приложение или нажатие копки «Home».

Обычно на этом этапе приостанавливаются какие-то задачи или ставится на паузу игра. В этом месте мы ставим «на паузу» пользовательский интерфейс.

Вызывается метод:

//
// proSwift.ru
//

func applicationWillResignActive(application: UIApplication) {
    
}

Также происходит оповещение с именем

UIApplicationWillResignActiveNotification

На схеме это стрелка №3

Приложение перешло в состояние Active

Вызывается метод

//
// proSwift.ru
//

func applicationDidBecomeActive(application: UIApplication) {
        
}

Также происходит оповещение с именем

UIApplicationDidBecomeActiveNotification

Следует перезапустиь все задачи, которые были поствалены на паузу в пердыдущем состянии, или которые не были запущены вовсе. Если приложение пришло из состояния  Background опционально обновить интерфейс.

На схеме это стрелка №2

Переход в состояние Background

Вызывается метод:

//
// proSwift.ru
//

func applicationDidEnterBackground(application: UIApplication) {

}

Также происходит оповещение с именем

UIApplicationDidEnterBackgroundNotification

Тут нужно сохранять пользовательские данные, или сохранять состояние приложения, чтобы оно запустилось с места остановки.

На схеме это стрелка №5

Переход из Background в состояние Foreground

Вызывается метод

//
// proSwift.ru
//
func applicationWillEnterForeground(application: UIApplication) {

}

Также происходит оповещение с именем

UIApplicationWillEnterForegroundNotification

В этом состояние можно сменить все изменения, сделанные в состоянии Background.

На схеме это стрелка №4

Пользователь закрывает приложение

Вызывается метод:

//
// proSwift.ru
//
func applicationWillTerminate(application: UIApplication) {

}

Также происходит оповещение с именем

UIApplicationWillTerminateNotification

Вконтакте

Facebook

Twitter

Google+

Одноклассники

iOS жизненный цикл приложения после длительных периодов бездействия

У меня есть приложение (написано в Swift), которое в настоящее время аварийно завершает работу после того, как пользователь переходит к определенному виду, а затем закрывает приложение или выключает устройство на несколько часов.

Мне интересно, что происходит с приложением после длительного периода бездействия:

  • Пытается ли приложение перейти к тому же представлению? (Я думаю, да)
  • Если да, то сначала он проходит через делегат приложения?
  • Это -viewDidLoad запустить снова или только -viewWillAppear ?
  • Если устройство полностью выключено, когда оно снова включается и пользователь пытается запустить приложение, оно полностью перезапускается или пытается перейти туда, где оно остановилось?

Мне трудно проверить, потому что для того, чтобы воссоздать эту проблему, я должен отключить устройство, находясь на определенном представлении, а затем оставить или несколько часов.

С другой точки зрения, журнал сбоев показывает следующее:

Exception Type:  00000020
Exception Codes: 0x000000008badf00d
Exception Note:  SIMULATED (this is NOT a crash)
Highlighted by Thread:  0

Application Specific Information:
matt.myApp-v2 failed to launch after 20.00s (launchIntent: foreground-interactive)

Elapsed total CPU time (seconds): 2.030 (user 2.030, system 0.000), 5% CPU 
Elapsed application CPU time (seconds): 0.006, 0% CPU

....

Error Formulating Crash Report:
Failed while requesting activity/breadcrumb diagnostics
ios swift lifecycle Поделиться Источник matt     15 января 2016 в 11:21

2 Ответа



2

0x000000008badf00d

Это жестко закодированная ошибка для сторожевого пса приложения. "Ate bad food".

Это означает, что ваше приложение завершается при запуске, потому что для возврата функции application:didFinishLaunchingWithOptions: требуется слишком много времени.

Я предполагаю, что вы делаете длинный вызов основных данных или сетевой запрос там.

Однако сбой здесь происходит при запуске. Не катастрофа, которая происходит после долгого периода времени.

Я подозреваю, что ваше приложение завершается OS из-за давления памяти из другого приложения, но затем при запуске приложения пытается продолжить делать то, что он больше не делает, и застрять где-то.

Что делает ваша функция application:didFinishLaunchingWithOptions: ?

Поделиться Fogmeister     15 января 2016 в 11:58



1

Проблема, с которой вы столкнулись, заключается в том, что iOS динамически обрабатывает память устройства. Если пользователь открывает приложение, которое требует много памяти,он может закрыть приложение в фоновом режиме, чтобы иметь свободную память.

Если пользователь вернется к вашему приложению, оно будет запущено снова, как и в первый раз, когда приложение открыто, или если пользователь убил ваше приложение в переключателе приложений.

Вы должны быть знакомы с жизненным циклом приложения, описанным в этой документации от Apple. Он описал различные состояния в приложении может быть и какой код вызывается, когда приложение возобновило работу.

Я предполагаю, что ваше представление вызывает что-то, что не инициализируется, когда приложение возобновляет активность, следовательно, сбой приложения.

Чтобы получить дополнительную информацию об отладке, вы должны попросить пользователя отправить вам отчет об ошибке. Если приложение распространяется в App Store, он или она должны включить Data & Diagnostics, чтобы отправить их, как описано в этом вопросе .

Поделиться Ermiar     15 января 2016 в 11:43


Похожие вопросы:


iOS жизненный цикл приложения 4/3GS/iPad vs 2G / 3G

Я прочитал документацию Apple о жизненном цикле приложений и сделал несколько тестов, чтобы выяснить, что такое жизненный цикл приложений на разных устройствах. (Все работает iOS 4.x кроме 2Г) Я...


Жизненный цикл приложения iOS во время обновления

Я хотел бы знать, в каком состоянии находится приложение, когда приложение обновляется. Например: Допустим, у нас есть запущенное приложение (называемое Le Music), которое воспроизводит музыку в...


Является ли AsyncStorage постоянным?

Я храню токен аутентификации моего приложения в AsyncStorage. Похоже, что как на Android, так и на iOS (менее уверен в этом), после длительных периодов бездействия (~2 недели) пользователи выходят...


iOS Фон & XMPPFramework

Поэтому я создал простое приложение XMPP, но, похоже, у меня не может быть фоновой обработки, если приложение не является одной из указанных категорий, перечисленных здесь . Я просто хочу, чтобы...


Жизненный цикл приложения Java

Его самый известный вопрос Applet против приложения и общий ответ-applet начинается с init() , тогда как приложение начинается с main() . Жизненный цикл Applet : init() -> start() -> paint() ->...


Жизненный цикл приложения

Я видел хорошие диаграммы, показывающие жизненный цикл деятельности , но я не могу найти диаграмму, показывающую жизненный цикл приложения - есть ли он? В действии onCreate является своего рода...


Не удается создать новый загрузчик после длительных периодов бездействия

У меня есть приложение Android, чьи Fragment s полагаются на загрузчики для извлечения данных. Ниже приведен код скелета моего Fragment . Все то же самое, за исключением того, что у меня есть...


Android жизненный цикл объекта приложения

Я не могу найти жизненный цикл объекта приложения (расширения приложения). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через тревогу. Будут ли...


Может ли iPhones быть отправлено на домашний экран после длительных периодов бездействия?

Обычно, если кто-то блокирует iPhone, находясь в определенном приложении, а затем разблокирует его, то это же приложение будет на экране. Я слышал, что после длительных периодов бездействия (в...


Flutter жизненный цикл приложения (Android/ Ios )

Есть ли метод жизненного цикла активности в flutter app android ? Нравится: onCreate() onResume() onDestroy() Или: viewDidload() viewWillAppear() Как обрабатывать жизненный цикл приложения, когда...


Жизненный цикл приложения iphone? - CodeRoad

Я смущен тем, как приложение iphone идет, когда оно начинает работать. Я имею в виду, когда я пытаюсь написать приложение, я запутываюсь и теряю такие термины, как "viewDidLoad", "viewDidUnload", "dealloc", "applicationDidLoad" и т. д. Я понятия не имею, когда один приходит первым, который приходит позже, когда приложение запускается. Например, скажем, я хотел бы добавить представление (или изображение), показывающее логотип моего приложения, когда приложение только что открыто (как и большинство приложений). Итак, где (viewDidLoad или applicationDidLoad) я должен поместить свой код?

Ну, это просто пример. Я буду признателен, если вы скажете мне ответ. Но больше всего меня беспокоит жизненный цикл запуска приложения, т. е. в каком состоянии, какой метод будет вызван. Заранее спасибо!

ios4 Поделиться Источник Newbie     31 августа 2011 в 18:11

2 Ответа



2

Для начала, возможно, вы захотите узнать следующее:

первый код, который вы получаете для запуска после завершения запуска приложения, - это тот, который вы помещаете в делегат приложения в методе application:didFinishLaunchingWithOptions. Делегат приложения-это класс, который настроен на получение общих уведомлений о том, что происходит с приложением, например, о завершении его запуска 🙂

Другой вид 'notifications' изменений в состоянии приложения или жизненном цикле представлений-это:

-viewDidLoad
-viewWillAppear:animated:
-viewDidAppear:animated:
-viewWillDisappear:animated:
-viewDidDisappear:animated:
-viewDidUnload

Эти методы объявлены в UIViewController, и вы можете реализовать их в своих подклассах UIViewController, чтобы настроить поведение представления в этих ситуациях (каждое имя метода является самоочевидным)

Жизненный цикл приложения довольно хорошо освещен здесь: http://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/iphoneappprogrammingguide.pdf стр. 27

О том, как показывать логотип при запуске приложения, приложения достигают этой настройки изображения "splash", помещая его имя в файл списка свойств info.plist в ключе UILaunchImageFile.

Поделиться Javier Soto     09 сентября 2011 в 22:38


Поделиться andyqee     23 сентября 2012 в 14:02


Похожие вопросы:


Изменить Жизненный Цикл Приложения Android

Я пытался понять, как управляется жизненный цикл активности! Есть ли кто-то, кто запускает все события жизненного цикла? может быть, ActivityManagerService? Как это сделать, если я хочу настроить...


iOS жизненный цикл приложения 4/3GS/iPad vs 2G / 3G

Я прочитал документацию Apple о жизненном цикле приложений и сделал несколько тестов, чтобы выяснить, что такое жизненный цикл приложений на разных устройствах. (Все работает iOS 4.x кроме 2Г) Я...


iPhone время запуска приложения, жизненный цикл вопрос

Я пытаюсь придумать метод, чтобы определить, как долго после того, как пользователь нажимает значок приложения, требуется, чтобы приложение было готово для ввода пользователем. Насколько я знаю,...


Жизненный цикл приложения Java

Его самый известный вопрос Applet против приложения и общий ответ-applet начинается с init() , тогда как приложение начинается с main() . Жизненный цикл Applet : init() -> start() -> paint() ->...


Жизненный цикл приложения

Я видел хорошие диаграммы, показывающие жизненный цикл деятельности , но я не могу найти диаграмму, показывающую жизненный цикл приложения - есть ли он? В действии onCreate является своего рода...


Android Жизненный Цикл Приложения

Я вижу много ответов, касающихся жизненного цикла деятельности, и это по большей части ясно для меня. То, что я ищу, - это жизненный цикл приложения. У меня есть следующий случай: Запуск...


Android жизненный цикл: объяснение переходов состояний

Я хочу обсудить жизненный цикл Android. Я знаю основы того, как работает жизненный цикл Android, но есть некоторые вопросы, которые я хочу задать. Почему Android приложений не переходят от запуска к...


Android жизненный цикл объекта приложения

Я не могу найти жизненный цикл объекта приложения (расширения приложения). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через тревогу. Будут ли...


Жизненный Цикл Приложения Chrome

Я читаю через жизненный цикл приложения Chrome . Модель выглядит очень просто. Там есть onLaunch и onSuspend . Мало вопросов: 1) Можно ли обнаружить переход от переднего плана к заднему? 2)...


Flutter жизненный цикл приложения (Android/ Ios )

Есть ли метод жизненного цикла активности в flutter app android ? Нравится: onCreate() onResume() onDestroy() Или: viewDidload() viewWillAppear() Как обрабатывать жизненный цикл приложения, когда...


Какова последняя функция в жизненном цикле приложения iPhone

Прежде чем мое приложение будет закрыто, я должен выйти из веб-службы. И я не могу найти самую последнюю функцию, которая вызывается перед смертью приложения?

-(void)LogoutUser
{    
    int userId = [[GlobalData sharedMySingleton] getUserId];

    NSString *soapMsg = 
    [NSString stringWithFormat:
     @"<?xml version=\"1.0\" encoding=\"utf-8\"?>...", userId
     ];

    NSURL *url = [NSURL URLWithString: @"http://....asmx"];     

    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];    
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];

    [req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];   
    [req addValue:@"http://..." forHTTPHeaderField:@"SOAPAction"];  
    [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];   
    [req setHTTPMethod:@"POST"];
    [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

    conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];

    if (conn) 
    {
        webData = [[NSMutableData data] retain];
    }     

}

-(void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *) response 
{
    [webData setLength: 0];
}

-(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data 
{
    [webData appendData:data];  
}

-(void) connection:(NSURLConnection *) connection didFailWithError:(NSError *) error 
{   
    [webData release];    
    [connection release];
}

-(void) connectionDidFinishLoading:(NSURLConnection *) connection 
{   
    NSString *theXML = [[NSString alloc] 
                        initWithBytes: [webData mutableBytes] 
                        length:[webData length] 
                        encoding:NSUTF8StringEncoding];    


    [theXML release];    

    [connection release];
    [webData release];   
}
iphone objective-c ios ipad Поделиться Источник 1110     09 апреля 2011 в 07:57

3 Ответа



6

Есть два места, из которых вам нужно будет запустить код выхода, оба из которых подробно описаны в справочной документации по протоколу UIApplicationDelegate.

Для устройств pre-iOS 4 (и для покрытия других обстоятельств) вы должны использовать:

- (void)applicationWillTerminate:(UIApplication *)application

Как говорит Apple:

Для приложений, которые не поддерживают фоновое выполнение или связаны против iOS 3.x или ранее, это метод всегда вызывается, когда пользователь завершает работу приложения. Для приложения, которые поддерживают фон выполнение, этот метод обычно не вызывается, когда пользователь выходит из системы приложение, потому что приложение просто перемещается на задний план в этом дело. Однако этот метод может быть вызывается в ситуациях, когда приложение работает в режиме фон (не приостановлено) и система должна прекратить его для некоторых причина.

Тем не менее, вам нужно будет использовать...

- (void)applicationDidEnterBackground:(UIApplication *)application
...

на устройствах iOS 4+, как (еще раз из документов Apple):

В iOS 4.0 и более поздних версиях этот метод звонил вместо того, чтобы applicationWillTerminate: метод, когда пользователь завершает работу приложения, которое поддерживает фоновое выполнение

Тем не менее, независимо от всего вышеперечисленного, вы, скорее всего, захотите выйти из веб-службы, когда ваше приложение будет фоновым, и снова войти в систему, когда оно будет "woken up". См. вышеупомянутый метод applicationDidEnterBackground: и документацию по методу applicationWillEnterForeground: для получения более подробной информации.

Поделиться John Parker     09 апреля 2011 в 07:59



0

- (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, called instead of applicationWillTerminate: when the user quits.
 */
}

это может быть не последняя функция, но. вы можете сделать выход здесь.

Поделиться Rakesh Bhatt     09 апреля 2011 в 07:59



0

Для типичных приложений под iOS 4.x, applicationWillResignActive и, возможно, applicationDidEnterBackground будут вызываться как до завершения вашего приложения (в какое-то неизвестное время в будущем), так и в другое время, когда приложение не завершается. Однако это может быть хорошей идеей, чтобы выйти здесь, так как ваше приложение может никогда не получить больше CPU времени выполнения.

Если у вас есть ожидающая сетевая активность, например попытка выхода из системы, вы можете использовать многозадачный вызов beginBackgroundTaskWithExpirationHandler: чтобы запросить немного дополнительного времени в фоновом режиме для завершения процесса выхода, например квитирование с любыми требуемыми сетевыми обратными вызовами.

Поделиться hotpaw2     09 апреля 2011 в 17:20


Похожие вопросы:


где находится состояние сеанса, состояние приложения в жизненном цикле страницы?

где находится состояние сеанса, состояние приложения в жизненном цикле страницы?


Загрузка карты только один раз в жизненном цикле приложения путем чтения файла в c++

я хочу загрузить карту, прочитав файл при запуске приложения, и хочу использовать эту карту в каком-то другом классе, чтобы найти определенную строку и выполнить логику. Загрузка карты должна...


Когда в жизненном цикле деятельности доступны для измерения UI элементов?

Я определяю некоторые анимации, основанные на завышенных размерах некоторых элементов управления UI. Какова самая ранняя точка в жизненном цикле активности, к которой я могу подключиться, чтобы...


Метод запроса процесса в жизненном цикле страницы

Мне нужно понять следующие утверждения Ведомость - 1 Наиболее распространенным обработчиком является обработчик страниц ASP.NET, который обрабатывает файлы .aspx. Когда пользователи запрашивают файл...


Вызовите что-то один раз в жизненном цикле приложения?

Для того, чтобы вызвать какой-то метод только один раз в жизненном цикле приложения, а не каждый раз приложение запускается, где я должен разместить такой метод? В onCreate() или где-то еще?


onCreateOptionsMenu в жизненном цикле фрагмента

Я обнаружил очень странное поведение в жизненном цикле Fragment . После нескольких тестов на одном Fragment , я понял, чем я получил этот порядок выполнения каждый раз: onCreateView() onStart()...


Сохранение состояния Vuex на смонтированном жизненном цикле

Я пытаюсь сохранить корневое состояние приложения на mounted жизненном цикле VueJS и заморозить копию в $root ' s data , и моя попытка выглядит следующим образом, mounted() { this.globalState =...


onPause() до onStopped() в жизненном цикле деятельности

В жизненном цикле Андоидной активности почему деятельность проходит через onPause() , прежде чем перейти к onStopped() ? Почему государство не может сразу перейти к onStopped() ?


Как обращаться с камерой flash в жизненном цикле приложения

Я не знаю, как обращаться с камерой flash в моем приложении. В моем приложении есть кнопка, которая включает и выключает камеру flash, все OK и приложение работает нормально, даже при нажатии кнопки...


Запрашивать авторизацию удаленных уведомлений в другое время в жизненном цикле приложения?

Я столкнулся со странной проблемой. Когда я запрашиваю авторизацию удаленных уведомлений внутри didFinishLaunchingWithOptions, используя приведенный ниже код, я могу получить push-удаленное...


Жизненный цикл делегата приложения (iOS)

Извините, если это глупый вопрос, но я отлаживаю проблему с висячим указателем в своем приложении, и мне нужно знать - возможно ли, чтобы приложение было resignActive без первого enterBackground ? К becomeActive без первого enterForeground ?

Моя ситуация - у меня есть класс (называемый 'Connection'), который управляет всеми приложениями requests/connections., которые должны быть доступны до тех пор, пока приложение действительно живо.

В моем -didFinishLaunchingWithOptions я инициализирую экземпляр соединения и устанавливаю некоторые параметры. В моем -applicationWillEnterBackground я приостанавливаю действия соединения.

И, на мой -applicationWillEnterForeground я могу проверить, чтобы увидеть, если экземпляр соединение существует до сих пор. Если это так, просто возобновите действия, иначе будет создан новый.

Когда я оставляю приложение работает на некоторое время (час или около того, с или без возврата на главный экран), приложение аварийно завершает работу с этой ошибкой.

"2012-08-19 13:08:42.708 Picsilk[11108:707] *** -[Connection respondsToSelector:]: message sent to deallocated instance 0x24e120"

Класс 'Connection' - это всего лишь простой подкласс NSObject, который управляет экземпляром ASINetworkQueue и обрабатывает некоторые конкретные потребности, которые у меня есть для хранения токенов пользователя и проверки подлинности запросов к моему api.

Экземпляр этого класса создается и управляется делегатом приложения. Мои различные контроллеры представлений используют делегат приложения для доступа к соединению, которое автоматически обрабатывает очередь (а также запросы без очереди)

Конечно, мне не хватает чего-то очень простого и фундаментального для моего понимания этого SDK, пожалуйста, помогите. :]

iphone ios5 appdelegate Поделиться Источник Doug     20 августа 2012 в 17:03

1 Ответ



4

Приложение может получать UIApplicationWillResignActiveNotification при поступлении вызова или других уведомлений. Так что, да, это возможно "for the app to resignActive without first enterBackground".

Поделиться Nikolai Ruhe     20 августа 2012 в 19:23


Похожие вопросы:


iOS жизненный цикл приложения 4/3GS/iPad vs 2G / 3G

Я прочитал документацию Apple о жизненном цикле приложений и сделал несколько тестов, чтобы выяснить, что такое жизненный цикл приложений на разных устройствах. (Все работает iOS 4.x кроме 2Г) Я...


Жизненный цикл Qt форм (или Windows)

Как я могу контролировать жизненный цикл QML форм (я имею в виду windows)? Я говорю о onCreate, onResume, onPause и т.д. методы на Android или жизненный цикл представлений на iOS. И могу ли я...


Жизненный цикл приложения iOS во время обновления

Я хотел бы знать, в каком состоянии находится приложение, когда приложение обновляется. Например: Допустим, у нас есть запущенное приложение (называемое Le Music), которое воспроизводит музыку в...


Жизненный цикл приложения Java

Его самый известный вопрос Applet против приложения и общий ответ-applet начинается с init() , тогда как приложение начинается с main() . Жизненный цикл Applet : init() -> start() -> paint() ->...


Жизненный цикл приложения

Я видел хорошие диаграммы, показывающие жизненный цикл деятельности , но я не могу найти диаграмму, показывающую жизненный цикл приложения - есть ли он? В действии onCreate является своего рода...


Жизненный цикл приложения-когда приложение находится в завершенном состоянии и push kit полезная нагрузка приходит

Каким будет жизненный цикл приложения? когда приложение находится в завершенном состоянии и push kit полезная нагрузка приходит. Прежде всего, будут работать методы делегата Pushkit или методы...


Android Жизненный Цикл Приложения

Я вижу много ответов, касающихся жизненного цикла деятельности, и это по большей части ясно для меня. То, что я ищу, - это жизненный цикл приложения. У меня есть следующий случай: Запуск...


Android жизненный цикл объекта приложения

Я не могу найти жизненный цикл объекта приложения (расширения приложения). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через тревогу. Будут ли...


Жизненный Цикл Приложения Chrome

Я читаю через жизненный цикл приложения Chrome . Модель выглядит очень просто. Там есть onLaunch и onSuspend . Мало вопросов: 1) Можно ли обнаружить переход от переднего плана к заднему? 2)...


Flutter жизненный цикл приложения (Android/ Ios )

Есть ли метод жизненного цикла активности в flutter app android ? Нравится: onCreate() onResume() onDestroy() Или: viewDidload() viewWillAppear() Как обрабатывать жизненный цикл приложения, когда...


iPhone жизненный цикл приложения - CodeRoad

InterfaceBuilder генерирует этот метод для меня в fooAppDelegate.m:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    

    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
}

IB также помещает UIWindow *window; в fooAppDelegate.h и @synthesize window; в fooAppDelegate.m, и соответственно для navigationController . IB генерирует код для выпуска window и navigationController в dealloc .

Я не вижу никакого кода, который выделяет и инициализирует window и navigationController . Интересно, где это происходит?

ОРЗ.

iphone objective-c ios interface-builder Поделиться Источник iter     14 марта 2010 в 03:45

1 Ответ



6

Внутри файла XIB находится код, который создает экземпляры объектов, хранящихся внутри него.

Вот почему экземпляр UIWindow является IBOutlet . Все, что является IBOutlet , обычно создается из файла XIB.

Interface Builder-это NOT генератор кода, это фабрика живых объектов.

"Interface Builder сохраняет интерфейс приложения как bundle, содержащий объекты интерфейса и отношения, используемые в приложении. Эти объекты архивируются (процесс, также известный как сериализация или маршалирование в других контекстах) либо в файл XML, либо в файл списка свойств в стиле NeXT с расширением .nib. При запуске приложения соответствующие объекты NIB неархивируются, соединяются в двоичный файл приложения-владельца и пробуждаются"

Поделиться Jacob Relkin     14 марта 2010 в 04:08


Похожие вопросы:


iOS жизненный цикл приложения 4/3GS/iPad vs 2G / 3G

Я прочитал документацию Apple о жизненном цикле приложений и сделал несколько тестов, чтобы выяснить, что такое жизненный цикл приложений на разных устройствах. (Все работает iOS 4.x кроме 2Г) Я...


iPhone время запуска приложения, жизненный цикл вопрос

Я пытаюсь придумать метод, чтобы определить, как долго после того, как пользователь нажимает значок приложения, требуется, чтобы приложение было готово для ввода пользователем. Насколько я знаю,...


Жизненный цикл приложения Java

Его самый известный вопрос Applet против приложения и общий ответ-applet начинается с init() , тогда как приложение начинается с main() . Жизненный цикл Applet : init() -> start() -> paint() ->...


Жизненный цикл приложения

Я видел хорошие диаграммы, показывающие жизненный цикл деятельности , но я не могу найти диаграмму, показывающую жизненный цикл приложения - есть ли он? В действии onCreate является своего рода...


Жизненный цикл приложения iphone?

Я смущен тем, как приложение iphone идет, когда оно начинает работать. Я имею в виду, когда я пытаюсь написать приложение, я запутываюсь и теряю такие термины, как viewDidLoad, viewDidUnload,...


Android Жизненный Цикл Приложения

Я вижу много ответов, касающихся жизненного цикла деятельности, и это по большей части ясно для меня. То, что я ищу, - это жизненный цикл приложения. У меня есть следующий случай: Запуск...


Android жизненный цикл: объяснение переходов состояний

Я хочу обсудить жизненный цикл Android. Я знаю основы того, как работает жизненный цикл Android, но есть некоторые вопросы, которые я хочу задать. Почему Android приложений не переходят от запуска к...


Android жизненный цикл объекта приложения

Я не могу найти жизненный цикл объекта приложения (расширения приложения). Например, что произойдет, если у меня есть широковещательный приемник, который вызывается через тревогу. Будут ли...


Жизненный Цикл Приложения Chrome

Я читаю через жизненный цикл приложения Chrome . Модель выглядит очень просто. Там есть onLaunch и onSuspend . Мало вопросов: 1) Можно ли обнаружить переход от переднего плана к заднему? 2)...


Flutter жизненный цикл приложения (Android/ Ios )

Есть ли метод жизненного цикла активности в flutter app android ? Нравится: onCreate() onResume() onDestroy() Или: viewDidload() viewWillAppear() Как обрабатывать жизненный цикл приложения, когда...


iOS жизненный цикл приложения 4/3GS/iPad vs 2G / 3G

Я прочитал документацию Apple о жизненном цикле приложений и сделал несколько тестов, чтобы выяснить, что такое жизненный цикл приложений на разных устройствах. (Все работает iOS 4.x кроме 2Г)

Я протестировал устройства с поддержкой "multitasking" против некоторых, которые не поддерживают эту функцию :

iPhone 2G / 3G жизненный цикл приложения :

(START)
- didFinishLunchingWithOptions
- applicationDidBecomeActive

(HOME PRESSED)
- applicationDidEnterBackground
- appWillTerminate

iPad / iPhone 4 жизненный цикл приложения:

(START)
- didFinishLunchingWithOptions
- applicationDidBecomeActive

(HOME PRESSED)
- appWillResignActive
- appDidEnterBackGround

(RESART app in the "Taskbar")
- appWillEnterForeGround
- appDidBecomeActive

Я пытался убить приложение из "taskbar" но отладчик получил SIGKILL ! Что происходит, когда вы убиваете и убиваете таким образом ?

Когда appWillTerminate вызывается на устройстве с поддержкой "multitasking" ? Верны ли мои результаты ?

EDIT:

Цитата из документа apple о appWillTerminate :

Для приложений, поддерживающих фоновое выполнение, этот метод обычно не вызывается при выходе пользователя из приложения, поскольку в этом случае приложение просто перемещается в фоновый режим. Однако этот метод может быть вызван в ситуациях, когда приложение работает в фоновом режиме (не приостановлено), и система должна завершить его по какой-либо причине.

Что они подразумевают под "generally not called". - система должна прекратить его действие.."означает, что метод appWillTerminate будет вызван ?

ios4 lifecycle Поделиться Источник Kami     01 февраля 2011 в 11:05

1 Ответ



1

Я думаю, что вы правы. Когда вы убиваете приложение с панели задач (или когда у вашего устройства заканчивается память и OS убивает приложение для вас), он просто посылает сигнал SIGKIL. Как вы заметили, он никогда не вызывает никаких обратных вызовов.

Согласно документации :

Для приложений, которые поддерживают фоновое выполнение, этот метод является как правило, не вызывается, когда пользователь завершает работу приложения, потому что приложение просто перемещается в Предыстория В этом случае. Тем не менее, это метод может быть вызван в различных ситуациях где выполняется приложение в фон (не подвешен) и система должна прекратить его для некоторых причина.

Итак, iOS может вызвать метод applicationWillTerminate: , но, вероятно, не будет. (я никогда его не видел.)

Если вы хотите сохранить какое-либо состояние до того, как ваше приложение будет убито, вам нужно сделать это, когда оно уходит в фоновый режим.

Поделиться Stephen Darlington     01 февраля 2011 в 11:45


Похожие вопросы:


Определение типа сети 2G, 3G или 4G

я разрабатываю приложение android, где я проверяю тип мобильной сети передачи данных для 2G, 3G и 4G. я использую для этого приведенный ниже код. ConnectivityManager cm = (ConnectivityManager)...


Целевое применение iPhone по модели (например, 3G vs 3GS)

Как и необходимые возможности устройства в файле info.plist, можно ли настроить приложение таким образом, чтобы оно было доступно только на некоторых моделях устройств? Я знаю, как нацелить его на...


UITableViewCell в iPhone 4 и iPhone 3G / GS

Я создаю пользовательский класс UITableViewCell в своем приложении iPhone, но мне неясно, как указать размеры, учитывая, что экраны iPhone 2G/3G/3GS и iPhone 4 имеют разное разрешение. Ясно, что...


Обнаружение iPhone 3G или 3GS (и iPod touch 2G против iPod touch 3G) в JavaScript

Кто-нибудь знает способ обнаружения более старого набора устройств: iPod сенсорный 1г iPhone 2Г iPhone 3Г iPod сенсорный 2Г Из нового набора: iPhone 3ГС iPod сенсорный 3Г iPad iPhone 4 Я нашел...


Ajax запрос на PhoneGap быстрее на 2G потом 3G

При разработке приложения PhoneGap для iOS и Android я обнаружил странное поведение. Загрузка файла на мой сервер происходит быстрее через 2G, а затем 3G. Это разница для файла 265 КБ: 2G: 0m 32s...


Значок приложения для iPhone 3g, 3gs и iPhone 4

Я планирую приложение для iphone 3g, 3gs и iphone 4. У меня есть изображение 57*57 для 3g и 3gs. Когда я проверил документацию apple предлагает нам использовать изображение 114*114 для iphone 4....


Как найти модель устройства iPhone/iPod (3G,3GS,4, 4 S) по коду?

Возможный Дубликат : Определить устройство (iPhone, iPod Touch) с помощью iOS Я попытался получить название текущей модели устройства, например 3G,3GS,4,4 S, iPodTouch (разные поколения). Но до сих...


iPhone 3, iPhone 4 и iPad конкретные ресурсы

iPhone<4 (<3, 3g, 3gs), iPhone 4 и iPad все имеют различное разрешение экрана. Я хочу, чтобы моя графика приложения iOS была идеальным качеством для всех этих устройств. Другими словами, Я...


iphone перенос приложения в ipad

я только что прочитал руководство приложения что-то. Приложения iPhone также должны работать на iPad без изменений, с разрешением iPhone и с разрешением 2X iPhone 3GS. но моя игра может работать на...


Выбор даты работает по-разному на 3GS, чем 3G, touch и iPad

Мое приложение попало в магазин приложений сегодня. У меня был пользователь представить странную ошибку. У меня есть выбор даты, который возвращает дату, которую я храню как строку в SQLite. Я...


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *