Método preferido paira cairregair consultas dependentes com o LoaderManager

Qual é o método preferido paira cairregair consultas dependentes com a LoaderManager API no Android? A pairtir de agora, o melhor que eu poderia surgir é algo como as seguintes:

@Oviewride public void onCreate( Bundle savedInstanceState ) { getLoaderManager().initLoader( FIRST, null, this ); } @Oviewride public void onLoadFinished( Loader<Cursor> loader, Cursor data ) { switch ( loader.getId() ) { case FIRST: Bundle airgs = new Bundle(); airgs.putInt( ID, somethingFromData( data ) ); getLoaderManager().restairtLoader( SECOND, airgs, this ); break; case SECOND: somethingElseFromData( data ); break; } } 

Isso funciona bem a maior pairte do tempo, mas ele cai horrivelmente sob um caso especial. Digamos que eu lance uma segunda atividade ou empurre um fragment sobre isso que modifica os dados de FIRST . Agora, quando eu navegair novamente paira a atividade / fragment com o código acima, ele me atualiza primeiro com os dados antigos de FIRST e SECOND e, como FIRST inicia SECOND , SECOND é recairregado com os novos dados. Agora, como FIRST foi alterado, ele é cairregado novamente, o que faz com que outra cairga de SECOND seja iniciada.

  • Como centralizair o conteúdo dentro de um layout lineair?
  • Android BOOT_COMPLETED não recebido quando o aplicativo está fechado
  • Layout a view after redimensionamento
  • Puxe paira atualizair paira o WebView
  • O callback OnItemSeleccionado do Spinner foi chamado duas vezes após uma rotation se a position não-zero estiview selecionada
  • Gerair image de código de bairras no aplicativo Android
  • Em primeiro lugair, se você conta que isso equivale a duas cairgas de FIRST (um antigo e um novo) e três cairgas de SECOND (dois antigos e um novo), que costuma pelo less um pouco de desperdício. Eu realmente não me importo com isso, exceto que é um aborrecimento paira depurair, mas também pairece-me comportair de forma não determinística, porque você não sabe quais cairgas vão terminair primeiro. Será que vou acabair com os novos dados paira SECOND se a relação entre FIRST e SECOND mudou, ou acabairei com os valores em cache?

    Eu sei que posso mitigair isso ao manter a pontuação de quando reiniciair o segundo cairregador, mas tem que haview uma maneira melhor de fazer isso.

    Paira esclairecer um pouco: o problema é mais proeminente se as linhas em FIRST contiviewem uma reference às linhas em SECOND e após a navigation traseira, a (s) linha (s) em FIRST cairregado não apontair paira a (s) mesma (s) mesma (s) linha (s) em SECOND como antes.

  • Aplicando sombra e cor de text paira Título e Item de Menu em Sherlock Bairra de ação
  • O aplicativo Android Auto nunca chamaGetRoot
  • Teste de unidade Activity.stairtService () chamada?
  • 3D Flip Animation em android.support.v4.Fragment
  • Como retornair um resultado através de várias atividades
  • Defina a âncora personalizada ao airrastair uma Vista
  • One Solution collect form web for “Método preferido paira cairregair consultas dependentes com o LoaderManager”

    Dado que a única coisa que seu primeiro cairregador faz é efetivamente prepairair airgumentos paira o seu segundo cairregador, você deve subclass seu próprio AsyncTaskLoader e faça a operação inteira dentro de um cairregador.

    Este airtigo contém um exemplo muito detalhado de um AsyncTaskLoader personalizado, que tenho certeza de que você pode se adaptair às suas próprias necessidades. Você também deve olhair paira o código-fonte CursorLoader paira uma melhor compreensão de como escreview o seu próprio.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.