e Loopers E o Android nos fornece vários meios para fazer processos em background 6 ➔ Jobs (API 21+) ➔ GCMNetworkManager ➔ SyncAdapters ➔ Loaders ➔ AlarmManager
a execução dos jobs, como no exemplo abaixo: if (Build.VERSION.SDK_INT >= 23) { // Usar JobScheduler } else { // Usar JobDispatcher ou AlarmManager } JobScheduler (API 23+) 13
fornecendo uma APIs de fácil entendimento para o processamento em segundo plano pelo sistema. Ele é destinado a trabalhos em segundo plano que devem ser executados mesmo se o aplicativo não estiver mais em primeiro plano. Sempre que possível, ele usa o JobScheduler ou o Firebase JobDispatcher para fazer o trabalho; Se o seu aplicativo estiver em primeiro plano, ele tentará fazer o trabalho diretamente no seu processo.” 20 https://developer.android.com/reference/androidx/work/WorkManager
garante a execução quando as restrições são atendidas, mesmo que o sistema seja reiniciado.” 21 https://developer.android.com/reference/androidx/work/WorkManager
levando em consideração a periodicidade e condições em que as tarefas serão executadas. Usando algumas APIs, podemos criar uma tarefa e entregá-la ao WorkManager para execução imediata ou no momento apropriado.” 23 https://medium.com/android-dev-br/workmanager-o-que-%C3%A9-com o-usar-26f5b800984e
catch (ClassNotFoundException e) {} setComponentEnabled(context, SystemAlarmService.class, enableSystemAlarmService); return scheduler; } Como o WorkManager escolhe em qual componente vai executar? 38
this; } public @NonNull Builder setRequiredNetworkType(@NonNull NetworkType networkType) { this.mRequiredNetworkType = networkType; return this; } Existem restrições aplicáveis a todas as versões do Android 41
this; } public @NonNull Builder setRequiresStorageNotLow(boolean requiresStorageNotLow) { this.mRequiresStorageNotLow = requiresStorageNotLow; return this; } Existem restrições aplicáveis a todas as versões do Android 42
return this; } @RequiresApi(24) public @NonNull Builder addContentUriTrigger(Uri uri, boolean triggerForDescendants) { mContentUriTriggers.add(uri, triggerForDescendants); return this; } E outras que apenas são usadas a partir de uma determinada versão do Android 43
ThreadPools ou RX) ➔ Extrair a cor da paleta e atualizar um ImageView (Use ThreadPools ou RX) ➔ Fazer transações de pagamentos (Use ForegroundService) Quando não devemos utilizar o WorkManager? 51