Autore Topic: Lanciare un'ACTIVITY in background da un'altra ACTIVITY [RISOLTO PER CASO SPEC]  (Letto 443 volte)

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Ciao ragazzi, sono un po in difficoltà per questa situazione...
Ho la mia MainActivity, e da qui vorrei lanciare una seconda activity che lavori in background. Non può essere semplicemente un servizio, perché il servizio estende IntentService, e la mia seconda activity estende già una classe (FragmentActivity) che non posso rimuovere perché mi serve per istanziare alcuni oggetti. Allora, avevo pensato di usare il servizio come "intermediario", per poi lanciare da esso un intent che mi risulterebbe la mia seconda activity. Però, quando la lancio, anche se proviene da un servizio in background, la mia activity passa in primo piano nella schermata, e ciò non lo voglio, perché desidero che ciò giri tutto in background. Come posso fare?  :-(
« Ultima modifica: 06 Maggio 2014, 15:27:35 CEST da valerio65 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #1 il: 04 Maggio 2014, 18:12:58 CEST »
0
Activity è sinonimo di "schermata". Quando "lanci" una activity, per definizione la visualizzi.

Se non vuoi una nuova schermata, ma solo lavoro in background, ci sono Thread e AsyncTask, da lanciare dalla tua activity corrente oppure da un Service.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #2 il: 04 Maggio 2014, 21:52:27 CEST »
0
Activity è sinonimo di "schermata". Quando "lanci" una activity, per definizione la visualizzi.

Se non vuoi una nuova schermata, ma solo lavoro in background, ci sono Thread e AsyncTask, da lanciare dalla tua activity corrente oppure da un Service.

Mmh... allora, quest'app deve lavorare in background e deve semplicemente inviare delle coordinate geografiche. Per inviarle, mi serve un oggetto Google  Map. Per istanziare un oggetto google map, devo prendere il fragment manager, e il metodo getFragmentManager() proviene dalla classe Activity. Quindi devo per forza estendere la classe activity (per l'esattezza FragmentActivity) e non posso estendere né Thread, né AsyncTask né IntentService. Per questo sono un po' in difficoltà :\

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #3 il: 05 Maggio 2014, 07:05:50 CEST »
0
Purtroppo non ho mai fatto niente con le mappe. Come mai serve il fragment per istanziare l'oggetto? Quale è?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #4 il: 05 Maggio 2014, 08:04:24 CEST »
0
Mmh... allora, quest'app deve lavorare in background e deve semplicemente inviare delle coordinate geografiche. Per inviarle, mi serve un oggetto Google  Map. Per istanziare un oggetto google map, devo prendere il fragment manager, e il metodo getFragmentManager() proviene dalla classe Activity. Quindi devo per forza estendere la classe activity (per l'esattezza FragmentActivity) e non posso estendere né Thread, né AsyncTask né IntentService. Per questo sono un po' in difficoltà :\

Ma sei sicuro ti serva il fragmentManager()?

Comunque una possibilità potrebbe essere applicare nel Manifest, all'attività in questione lo stile:
Codice (XML): [Seleziona]
android:theme="@android:style/Theme.NoDisplay"

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #5 il: 05 Maggio 2014, 15:20:01 CEST »
0
Ma sei sicuro ti serva il fragmentManager()?

Comunque una possibilità potrebbe essere applicare nel Manifest, all'attività in questione lo stile:
Codice (XML): [Seleziona]
android:theme="@android:style/Theme.NoDisplay"

Ho provato, ma si comporta in modo anomalo... è come se andasse in loop, infatti poi se provo ad interagire con l'app mi fa "l'applicazione non risponde".
Comunque ho risolto, in pratica ho notato che non ho bisogno per forza della google map per acquisire le coordinate geografiche, ma basta definire il costruttore del LocationClient e poi richiamare il metodo connect(). Grazie comunque  :D

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Come lanciare un'ACTIVITY in background da un'altra ACTIVITY
« Risposta #6 il: 05 Maggio 2014, 15:39:10 CEST »
0
Sì è decisamente meglio così.

Usando
Codice (XML): [Seleziona]
android:theme="@android:style/Theme.NoDisplay"devi stare attento perchè la tua attività è eseguita (anche se non visibile) e non puoi interagire con essa, quindi devi essere sicuro che ad un certo punto l'attività NoDisplay finisca
Codice (Java): [Seleziona]
MiaAttivita.this.finish() altrimenti tutta l'applicazione si blocca!

Ciao!!!