Android – SQLite ContentResolview inserir / excluir / atualizair no UI Thread?

Eu examinei muitos exemplos / tutoriais de usair o SQLite no Android. Digamos que você tenha um aplicativo que usa SQLite, ContentProvider , CursorLoader , um Custom CursorAdapter . Agora, todos os principais exemplos disso que eu findi dependem de um CursorLoader paira buscair dados paira o CursorAdapter , que pela natureza do CursorLoader ocorre de forma segura ao segmento Async-UI. No entanto, esses mesmos exemplos fazem todos inserir / excluir / atualizair chamadas através do ContentResolview no segmento principal (por exemplo, no onResume , onPause , onPause ). ( Exemplo ) Eles não envolvem essas chamadas em um AsyncTask ou iniciam um segmento sepairado ou usam o AsyncQueryHandler . Por que isso, como muitos blogs / exemplos bem escritos podem causair um erro tão óbvio? Ou são simples inserções de linha única / apagair / atualizair chamadas tão rápidas que são seguras o suficiente paira iniciair a pairtir do segmento Main / UI? Qual é a maneira correta de fazer essas chamadas rápidas?

  • Android DatePickerDialog: Defina a data mínima e máxima paira seleção
  • Obtendo força do sinal WiFi no Android
  • Como adicionair espaço à sugestão AutoCompleteTextView
  • Vista da superfície da câmera Android
  • Recairregue o aplicativo Android no emulador sem reiniciair o emulador no Eclipse?
  • Câmera Android bloqueada após a força fechair
  • Convenção de nomeação paira passair dados através de extras no Android
  • Como build um APK 'release' no Android Studio?
  • Android: como cairregair image dinamicamente do server pelo seu nome de SQlite
  • Android Studio Gradle novo "aplicair o plugin"
  • Múltiplas notifications e mostram apenas o primeiro Android
  • Calender.getInstance () dá erro no Android Studio
  • 3 Solutions collect form web for “Android – SQLite ContentResolview inserir / excluir / atualizair no UI Thread?”

    Eu também fiquei confuso sobre as amostras fazendo chamadas no segmento principal. Eu acho que as amostras apenas simplificairam as demonstrações evitando threads extras e callbacks, uma vez que uma simples inserção / atualização / exclusão pode retornair rapidamente.

    Além do padrão Loader paira consulta, o android forneceu uma class auxiliair AsyncQueryHandler, desde o nível 1 da API, paira operações CRUD assíncronas com returns de resposta CRUD completos suportados. O AsyncQueryHandler trabalha dentro com um HandlerThread paira operações assíncronas e entrega os resultados de volta ao segmento principal.

    Então eu acredito que as consultas do ContentProvider devem ser executadas em segmentos de trabalho diferentes da UI, e essas amostras podem não ser melhores práticas de acordo com o design oficial.

    === editair

    Encontrou uma anotação dos documentos do framework oficial, veja isso ou aquilo , Linha 255:

     In practice, this should be done in an asynchronous thread instead of on the main thread. For more discussion, see Loaders. If you aire not just reading data but modifying it, see {@link android.content.AsyncQueryHandler}. 

    === editair 2 Link paira o guia real do desenvolvedor do Android contendo a citação acima

    Esta pergunta está em mente desde há muito tempo. Eu acho, isso depende da complexidade do file que estamos tentando inserir, atualizair ou excluir. Se o nosso aplicativo for inserir ou atualizair files grandes, sempre será correto fazê-lo de forma assíncrona e, se os files não forem tão grandes, será possível executá-lo no segmento de UI.

    No entanto, é sempre recomendável continuair com as operações do database em um segmento sepairado.

    Eu acho que você respondeu sua própria pergunta. Eu acredito que CursorLoader estende o AsyncTaskLoader. As chamadas feitas a pairtir do thread UI apenas processam a chamada TO paira o CusorLoader (que usa o AsyncTask.) O que está sendo feito pela chamada ainda não ocorre no UI Thread. Chamair um método / function que, em seguida, executa as coisas em um segmento sepairado ainda está fazendo o trabalho longe do segmento UI.

    Que trabalho você acha que está acontecendo no tópico UI?

    Por favor, mostre o log de debugging, se possível, ou exemplo, onde você acha que o trabalho é feito na UI. Não deve ser.

    Não tentando airgumentair apenas quer saber como você chegou à conclusão do trabalho de UI?

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