Notifica attività dal servizio

Sto cercando di avviare un Service dalla mia Activity per cercare i cambiamenti in una pagina web, è un'applicazione privata in modo da non preoccuparti della durata della batteria …

Ma vorrei passare i dati dal mio Service alla mia Activity … non riesco a trovare un modo per call l' Activity dal mio Service . Come posso raggiungere questo objective?

  • Qual è l'equivalente di un setInterval / setTimeout JavaScript in Android / Java?
  • disegnando un cerchio in cui l'utente ha toccato la canvas
  • Scheda frammento Android host + viewpager swipe?
  • Posizione di DialogFragment in Android
  • Sqlite di Android come controllare se esiste un record
  • Come get le coordinate dello schermo dal marcatore in google maps v2 android
  • Come ridimensionare un bitmap in modo efficiente e senza perdere la qualità in android
  • Verifica se esiste un file
  • Punch un foro in un rettangolo overlay con accelerazione HW abilitato su View
  • cercando l'indicatore di auto-messa a fuoco della camera
  • Java: call il metodo della class esterna nella class interna anonima
  • come visualizzare o leggere il file docx
  • 4 Solutions collect form web for “Notifica attività dal servizio”

    Come indicato da Alex, puoi legarsi al servizio e passare una sorta di listener o di richiamata al servizio da utilizzare per gli events.

    Oppure, è ansible utilizzare un Intent trasmissione, forse utilizzando methods come setPackage() per limitare l'ambito della trasmissione.

    Oppure, è ansible utilizzare createPendingResult() per creare un PendingIntent che si passa come Intent extra al servizio – il servizio può quindi utilizzare tale PendingIntent per triggersre onActivityResult() nell'attività.

    Oppure, è ansible utilizzare un ResultReceiver .

    Oppure, è ansible utilizzare un Messenger .

    (anzi, non ho provato questi ultimi due approcci, ma credo che lavoreranno qui)

    Un'altra alternativa: se il tuo servizio aggiorna i provider di contenuti, l'attività può essere notificata tramite ContentObserver . Questo sarebbe sufficiente se il tuo servizio scaricava alcuni dati dal server e vuoi semplicemente visualizzare contenuti nuovi nell'attività.

    Alcuni modi brutti:

    1.) Se l'attività non è ancora iniziata, utilizza intent e startActivity , ma ricordi di intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    2.) Altrimenti se l'attività è già stata avviata, puoi scrivere il proprio metodo di richiamata nell'attività e registrare il metodo nel servizio, quindi call direttamente il metodo nel servizio.

    Speri di trovare un modo intelligente.

    Penso che anche la trasmissione funziona bene, puoi scrivere una class interna statica per ricevere la trasmissione e iniziare l'attività. Ma è anche brutto a mio parere.

    Il meccanismo ResultReceiver è stato spiegato in un altro post: – Servizio API restful Tuttavia non functionrebbe in tutti i casi. Fai riferimento al mio commento su quel post. Il broadcast limitato o il meccanismo PendingIntent sembrano più adatti.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.