/ / iPhone - przełączanie szybkich aplikacji i iOS 4 - iphone, ios4, xamarin.ios, wielozadaniowość, szybkie przełączanie aplikacji

iPhone - szybkie przełączanie aplikacji i iOS 4 - iphone, ios4, xamarin.ios, wielozadaniowość, szybkie przełączanie aplikacji

Próbuję uzyskać następujące funkcje w mojej aplikacji na iPhone'a:

  • Gdy jest w tle, pozostaje uruchomiony (nie musi wykonywać żadnych prac w tle)
  • Po wznowieniu aplikacja odbiera miejsce, w którym została przerwana

Głównie chcę, aby ten sam ekran w mojej aplikacji wciąż działał, ponieważ istnieje kilka UINavigationControllers w UITabBarController.

Zrobiłem wszystkie następujące rzeczy:

  • Upewniłem się, że kompiluję pakiet 4.1 SDK
  • Ustaw UIApplicationExitsOnSuspend na false
  • Handle DidEnterBackground i WillEnterForeground w moim AppDelegate
  • Zadzwoń na BeginBackgroundTask w DidEnterBackground, aby zachować otwartość mojej aplikacji

Używam MonoTouch, ale prawdopodobnie jest to kwestia rzeczywista, na pewno mogę odbierać odpowiedzi w Obj-C.

Przetestowałem moją aplikację na telefonie z jailbreakW tle i widzę, że znaczek "aplikacja w tle" znika natychmiast po naciśnięciu przycisku strony głównej. Próbowałem również ustawić UIBackgroundModes w moim Info.plist, ale bez skutku.

Czy jest coś, czego mi brakuje?

Czy jest to coś, co musiałbym wdrożyć na własną rękę, aby wznowić poprzedni stan mojej aplikacji? Wszędzie czytałem, że rozmowy powinny działać automatycznie.

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli nie chcesz pracować w tle,Nie dzwoń do beginBackgroundTask To połączenie dotyczy sytuacji, w których chcesz wykonywać jakąś pracę w tle, a jeśli nie zakończysz wystarczająco szybko pracy, system iOS zakończy aplikację.


1 dla odpowiedzi nr 2

Po aktualizacji do iOS 4.x moja aplikacja MT zaczęła wykazywać to zachowanie, nie musząc nic robić. iOS powinien się tym zająć.


1 dla odpowiedzi nr 3

W końcu skontaktowałem się z kimś z zespołu IRC MonoTouch.

W MonoDevelop istnieje opcja utworzenia podwójnego projektu iPad / iPhone, z którego korzystałem. Powoduje to, że moja aplikacja zachowuje się tak, jakby była uruchomiona z pakietem SDK 3.2 po wdrożeniu na urządzeniu.

Myślę, że moim rozwiązaniem jest zainstalowanie SDK iOS 4.2, który właśnie został wydany, ponieważ reklamuje nową funkcję wielozadaniowości na iPadzie.


0 dla odpowiedzi nr 4

Nie tylko potrzebujesz wsparcia w wejściuW tle musisz też obsługiwać przypadki, w których Twoja aplikacja została zakończona. W kodzie inicjowania aplikacji należy przywrócić stan, w którym się znajdował. Na przykład po naciśnięciu kontrolera widoku użyj NSUserDefaults aby zapisać wartość dla aktualnie wyświetlanego ekranu, a następnie po rozpoczęciu odczytu tej wartości i wyświetlić powiązany ekran.