Cosa succede quando la mia attività viene distrutta quando utilizzo IntentService con ResultReceiver

Ho cercato attraverso la networking per trovare questa risposta. Ma nessun risultato trovato. Mi dispiace che sono un novizio in programmazione Java e Android.

Vorrei elaborare più sulla mia domanda. Lasciate che la mia attività ha avviato un IntentService e funziona in modo indipendente in background. Il servizio è "sottoscritto" al richiamo di ResultReceiver per aggiornare l'UI Attività. E durante il servizio è in esecuzione il process in corso, l'attività viene distrutta. Allora, cosa succede se il servizio invia un aggiornamento di risposta o di avanzamento all'attività tramite il ResultReceiver?

  • Android - Attivazione della chiave di block del sistema (aka schermo di block)
  • Verifica interazioni negli abbonati di rxjava
  • come get una string di due size dimensionale da un'attività all'altro
  • App Widget mentre mostra l'elenco delle immagini
  • Notifica Push di Android senza utilizzare GCM
  • Includi Stetho solo nella variante di creazione di debug
  • Causa come lo so, il ResultReceiver deve avere un riferimento all'attività.

    Nel mio progetto devo sviluppare un'applicazione di messaggistica video clip. Quale quando l'utente ha catturato il video, passerà i dati al servizio e il servizio esegue il caricamento, nonché il salvataggio di alcune informazioni in db .. mentre continua a pubblicare l'aggiornamento dei progressi nell'interface utente di attività tramite ResultReceiver.

    L'utente è in grado di uscire o uccidere l'attività come desidera. Ma quando tornano all'app / attività, se il caricamento / download è ancora in corso, deve mostrare il progresso corrente.

    Inizialmente penso ad Asynctask, ma ha anche un problema simile come ho detto. Richiede un riferimento all'triggerszione del chiamante.

    C'è where posso get il requisito che ho citato? Ci scusiamo per il lungo post. Spero che qualcuno possa illuminarmi un po 'ed è anche meglio avere un frammento di codice. Molte grazie 🙂

    Modifica: insum, c'è un modo per associare dynamicmente un'attività appena creata a un IntentService in esecuzione in modo che il servizio possa submit l'aggiornamento del process all'attività corretta?

  • Twitter API restituisce la richiamata non valida - Non è ansible autorizzare
  • come get la string da differenti locales in Android?
  • ListPreference: utilizzare string arrays come Entry e arrays integer come valori di inserimento non funziona
  • Servizi Android ad alta priorità
  • Android Admob senza Google Play
  • Gestione SDK: Imansible installare. SDK android platform 3.0 API 11, revisione 2
  • One Solution collect form web for “Cosa succede quando la mia attività viene distrutta quando utilizzo IntentService con ResultReceiver”

    Utilizzare un BroadcastReceiver onResume() e registrare / onResume() in onResume() e onPause() rispettivamente. È ansible utilizzare un IntentFilter per ascoltare una Intent dal tuo IntentService .

    Nella IntentService , creare un valore di azione per IntentFilter e submit una trasmissione con quella azione quando si desidera aggiornare:

     public static final String ACTION = "com.example.yourapp.action.ACTION_TAG"; private void handleResult() { if (BuildConfig.DEBUG) { Log.v(TAG, "handleResult"); } // Broadcast result Intent intent = new Intent(ACTION); intent.putExtra("your_extra", someValue); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } 

    Nella tua Activity :

     private BroadcastReceiver mYourReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (BuildConfig.DEBUG) { Log.v(TAG, "onReceive"); } Bundle bundle = intent.getExtras(); if (bundle != null) { // Update with content from bundle } } }; @Override public void onResume() { super.onResume(); if (BuildConfig.DEBUG) { Log.v(TAG, "onResume"); } // Register broadcast receiver LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mYourReceiver, new IntentFilter(YourIntentService.ACTION)); } @Override public void onPause() { super.onPause(); if (BuildConfig.DEBUG) { Log.v(TAG, "onPause"); } // Unregister broadcast receiver LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mYourReceiver); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.