Autore Topic: messaggi tra due applicazioni  (Letto 666 volte)

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
messaggi tra due applicazioni
« il: 02 Febbraio 2015, 00:04:41 CET »
0
ciao,
Ho un webservice rest online , un app android e un applicazione vb.net.
Ho gia tutti gli strumenti da usare e ho gia fatto molte cose adesso si tratta di aprire una comunicazione tra l'app e l'applicazione vb.net per 10 min.
ho un id dell app e un id del applicazione e vorrei gestire appunto per 10 min uno scambio di messaggi.
Il messaggio puo essere postato sul web service con l'identificativo sia da vb.net che da android , tramte il web service che registra il messagggio su una tabella sul suo db.
Poi app e client vanno alla ricerca dei messaggi a loro destinati tramite chiamate al web service che cerca sul db i messaggi e li invia ,se ci sono al chiamante in json.
Ora per quanto riguarda l'applicazione vb.net ho risolto con un background worker (un thread separato che per 10 min fa chiamate ogni min al webservice che risponde in json se ci sono messaggi.
per l'app sinceramente non so cosa usare, un servizio e un broadcastrecever ?
vorrei pero fare tutto su di un thread separato non il principale(e mi sembra che  i servizi siano sul thread principale ma forse sbaglio) e fare partire la comunicazione e poterla fermare a io piacimento in modo da non usare molte risorse.
alla fine forse potrei risolvere tutto con un thread forse, che per 10 min fa chiamate al webservice e invia risposte.
ma poi è possibile in modo semplice comunicare i messaggi dal thread separato al principale ? ad un activity in pratica che visualizza i messaggi.
se uso i servizi è possibile dargli una durata, farli partire , fermarli e ripartire ancora?
voi cosa mi consigliate?
non sono molto esperto in android e si vede.
grazie.
ciao.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:messaggi tra due applicazioni
« Risposta #1 il: 02 Febbraio 2015, 00:26:15 CET »
0
Creare un service avviarlo e stopparlo sono forse 100 secondi di programmazione. Puoi avviarlo facendo startService(i) e passando un intento come parametro.
Puoi ovviamente fare stopService() sempre passando lo stesso intent.
Il service è una cosa a parte. Cioè. Puoi terminare la tua applicazione, sia te utente o sia android, ma il service continuava girare normalmente (in realtà riparte).
Poi nel service fai quello che vuoi. Puoi anche creare un thread nel service. Credo che la maggior parte di librerie per la rete su android implementano già loro i thread.

Nella tua app puoi creare un timer. Fine timer scatena lo stopservixe.
Oppure alla creazione del service avvi un cronometro (implementato come vuoi). E scaduti i 10 min il service può anche stopparsi da solo.

Reso l'idea?


Post unito: 02 Febbraio 2015, 00:29:13 CET
Dimenticavo. ovviamente il service può comunicare con la tua app.
« Ultima modifica: 02 Febbraio 2015, 00:29:13 CET da tonno16, Reason: Merged DoublePost »

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:messaggi tra due applicazioni
« Risposta #2 il: 02 Febbraio 2015, 08:58:59 CET »
0
grazie 1000.
Molto gentile.
solo una cosa hl bisogno di un broadcastrecever per comunicare tra service e activity o posso fare senza?
quale è il modo piu sicuro ?
ps.intaanto sto leggendo la documentazione dei service forse lo trovo li cmq te lo chiedo dato che l'hai gia fatto e hai esperienza,
ciao.

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:messaggi tra due applicazioni
« Risposta #3 il: 03 Febbraio 2015, 23:01:15 CET »
0
ho letto un po su google ma non riesco a capire la logica :
parto e avvio il service con un timer per 10 min , ma quale è la funzione in cui eseguire il lavoro "pesante" o meglio per me "continuo"?
Devo fare ripartire il service tutte le volte che finisce il suo lavoro?
non è possibile avere una funzione che viene eseguita per 10 min con uno sleep diciamo di 30 sec e invia notificazioni ad un broadcast receiver?
esiste questa funzione o non ho capito?
come funziona?
grazie ancora

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:messaggi tra due applicazioni
« Risposta #4 il: 03 Febbraio 2015, 23:03:18 CET »
0
Puoi settare un alarm manager che ogni 10 min avvi il tuo lavoro sporco. Però nel broad cast non puoi fare un lavoro "pesante"

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:messaggi tra due applicazioni
« Risposta #5 il: 03 Febbraio 2015, 23:23:00 CET »
0
quello che non ho spiegato e forse ti ho portato fuoristrada è che mi serve fare delle chiamate asincrone ad un webservice rest con un client ogni 10 sec per 10 min.
lo devo fare per 10 min quado trovo qualcosa nel webservice passo una notifica al receiver non gli faccio fare nessun lavoro solo una notifica poi avant cosi cin l'interrogazione del web service e le notifiche fino a che non scadono i 10 min come tu  mi hai spiegato , timer o alarm ec....
grazie.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:messaggi tra due applicazioni
« Risposta #6 il: 03 Febbraio 2015, 23:30:46 CET »
0
Potresti settare un alarm manager ogni x min.
Quindi li avvi un service. Il service fa quello che deve fare....può anche notificare qualcosa all'utente. Poi esso si termina.

Quando la prossima allarme verrà chiamata si avvierà nuovamente il service.

Che poi puoi giocartela come vuoi.
Se effettivamente ogni 10 min devi farr 10 secondi di lavoro potrebbe essere un idea.

Se invece devi fare ogni 10 sec 10 min di lavoro magari non è la scelta giusta. Secondo me...

Post unito: 03 Febbraio 2015, 23:32:39 CET
Aggiungo che fare 10 min di chiamate ogni 10 secondi non ha senso. Cioè. Ti ritroveresti a fare le stesse chiamate.
Sarebbe giusti se tale web service espone dati che potrebbero cambiare ogni 5 secondi.
« Ultima modifica: 03 Febbraio 2015, 23:32:39 CET da tonno16, Reason: Merged DoublePost »

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:messaggi tra due applicazioni
« Risposta #7 il: 03 Febbraio 2015, 23:58:33 CET »
0
inffatti i dati cambiano circa ogni 10 20 sec .
va bene , grazie 1000 vorrei solo finire prima di andare a letto : come faccio a invocare una funzione ogni 10 20 sec?
grazie.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:messaggi tra due applicazioni
« Risposta #8 il: 04 Febbraio 2015, 00:00:49 CET »
0
Come scritto più volte in questo thread. Timer o alarm manager.
Guardati CountDownTimer.
magari ti va bene

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:messaggi tra due applicazioni
« Risposta #9 il: 04 Febbraio 2015, 00:05:40 CET »
0
grassie