android

Android Tests – Como pegar o valor de um LiveData (How to get the value from a LiveData)

Solução de como obter o valor de um LiveData em seus testes Caso se depare com o problema Cannot invoke observeForever on a background thread veja esse post: https://helpdev.com.br/2019/11/06/android-tests-cannot-invoke-observeforever-on-a-background-thread/ Referência: https://github.com/android/sunflower/blob/master/app/src/androidTest/java/com/google/samples/apps/sunflower/utilities/LiveDataTestUtil.kt

Android Tests – Cannot invoke observeForever on a background thread

Ao realizar um teste utilizando coroutine me deparei com esse problema ao tentar observar um LiveData Cannot invoke observeForever on a background thread Para contextualizar o problema, eu estava utilizando um dao do Room com uma suspend function para me retornar um LiveData, exemplo: O problema é a execução do observer fora da thread da […]

Android – Como remover o fragment da pilha ao navegar (How to clear navigation Stack after navigating to another fragment)

Nesse post vou mostrar como remover da pilha o fragment anterior utilizando a nova arquitetura de navegação do android ( Navigation Architecture Component ) Dado a seguinte navegação A -> B -> C ao adicionarmos o código a seguir a action de navegação do B para o C a stack de volta ficaria assim: C -> A […]

Android – Adicionando onBackPressed com dois clicks no Fragment (Clicking the back button twice to exit)

Quando estamos em um fragment não temos acesso ao override do onBackPressed, nesse caso temos que acessar a FragmentActivity e adicionar um Callback no onBackPressedDispatcher, dessa maneira começamos a interceptar o click. Na solução abaixo criamos um callback que permite a ação voltar diretamente do Fragment após ele ter realizado o click em um intervalo […]

Android – Compartilhar código entre teste unit e instrumental ( Sharing code between unit tests and instrumentation tests on Android )

Suponhamos que você tenha uma aplicação android com uma serie de testes. Alguns deles são testes unitários (unit tests), localizados em: src/test, e testes instrumentais (intrumentation tests), localizados em: src/androidTest. O problema encontrado é que muitas vezes temos códigos que poderiam ser compartilhados entre esses testes, mas não temos como fazer isso pois estão em […]

Android – Accessing hidden method Ljava/lang/Thread – Coroutines do not log uncaught exceptions in Android

Verificar Issue: https://github.com/Kotlin/kotlinx.coroutines/issues/148#issuecomment-338101986 Solução que utilizei: val handler = CoroutineExceptionHandler { _, ex -> ex.printStackTrace() //TODO } launch(CommonPool + handler) { //your code here }

Android – Configurando o Dagger com Worker (Dagger 2 setup with WorkManager)

No exemplo a seguir mostro como configurar o Dagger 2 para trabalhar com o WorkManager. Atualmente é uma tarefa bem complicada e que possivelmente sofrerá alterações em sua implementação pois o WorkManager é uma nova API do Android e o Dagger2 ainda não tem recursos para facilitar a implementação de injeção de dependências nela. Este […]

Android – Como detectar se a aplicação está minimizada ou não (How to detect Android application in background or foreground events)

Se você estiver usando a biblioteca de componentes de arquitetura do Android, poderá usar o ProcessLifecycleOwner para configurar um ouvinte para todo o processo do aplicativo para eventos onStart e onStop. Para fazer isso, faça com que sua classe de aplicativo implemente a interface LifecycleObserver e inclua algumas anotações de onStop e onStart em seus […]

Rolar para o topo