Domanda

Nella mia app sto usando CLLocationManager e AdWhirl. Non ho fatto nessuna di sviluppo specifico per quanto riguarda la modalità di sfondo:. Non voglio la mia app per lavorare quando è in fondo, vale a dire quando la stampa il "tasto home" dell'utente, posizione GPS non deve essere aggiornato

Ieri sera ho premuto "tasto home", e questa mattina l'iPhone è stato di batteria. Si tratta di un iPhone 4 con iOS 4.1, non jailbreaked, e non v'è alcuna applicazione in background in esecuzione.

La batteria è stata di circa il 35% di ieri sera, e lo 0% di questa mattina (iPhone è stato di arresto).

Ho impostato punto di interruzione nel mio delegato, che è chiamato ogni volta la posizione GPS viene aggiornato. Quando applicazione è in modalità background, delegato non si chiama. Così sto pensando GPS è davvero disattivata in modalità background. Ok

Questa mattina, sto seguendo il consumo della batteria: si tratta di circa l'1% goccia ogni 15 min. Credo che sia un po 'troppo.

devo fare qualcosa di specifico quando l'applicazione va in modalità background? Pensi che questo calo 1% è normale?

È stato utile?

Soluzione

Sì, accesso a internet e GPS sono due grandi canali di scolo a batteria. Non so affatto cosa si intende con il normale, dal momento che nessun altre applicazioni sono in esecuzione aver concluso che questo è in realtà quello che succede :) Supponendo aver testato con NO applicazioni in esecuzione e non ha ottenuto 1% per ogni 15 minuti ...

Per AdWhirl, non si sa se si ferma già l'accesso a Internet quando l'applicazione passa in secondo piano, ma è possibile aggiungere questo alla tua App delegato:

- (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.
     */
    [lm stopUpdatingLocation];
    [adView ignoreAutoRefreshTimer]
}


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

(lm e ADView sono l'oggetto Location Manager ed l'adWhirlView, entrambi dichiarati in App Delegato. Ho trovato più utile per fare tutte le località gestire attraverso metodi che faccio in App Delegato.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top