Universidade Federal do Paraná

Documentos relacionados
Usando e Gerenciando Activities

Desenvolvimento de um aplicativo básico usando o Google Android

Programação para Dispositivos Móveis

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Programação para Dispositivos Móveis. Activities

Android: Ciclo de vida da Activity

Log, Ciclo de Vida e Diálogos. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Desenvolvimento de um aplicativo básico usando o Google Android

Computação Móvel Activity (Ref. Cap. 4)

Android OLÁ MUNDO MÓVEL. Prof. Dr. Joaquim assunção.

Fragments. Criar um novo projeto. Selecionar a API. Navigation Drawer Activity. Fragments. Luiz Eduardo Guarino de Vasconcelos

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Universidade Federal do Paraná

Programação para Dispositivos Móveis. Activity e Intent

Android DEFINIÇÕES E CICLO DE VIDA. Prof. Dr. Joaquim assunção.

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Computação Móvel ActionBar e Temas (Ref. Cap. 5)

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

Expectativa de respostas

Programação para Android. Aula 06: Activity, menus e action bar

Introdução ao Desenvolvimento para Dispositivos Móveis

Android. Interfaces: widgets

EA998/MC933 Guido Araujo e Sandro Rigo

API's e Aplicações para Android

Navegar entre páginas Necessário o uso de Intent. Intenção de ir a algum lugar, acessar outros recursos, outros apps.

Aplicações que executam, em geral, processos longos em background desprovidos de interface. Usado para executar tarefas em segundo plano

Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Introdução ao Desenvolvimento de Aplicativos Android

Criando as primeiras telas (Activity)

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

NOVO SISTEMA DE CORREIO ELETRONICO PARA OS DOMINIOS ic.uff.br & dcc.ic.uff.br

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Descrição geral do Android

Statecharts Yakindu Tool

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Programação para Dispositivos Móveis

Prof: Ricardo Quintão Site:

Prof. Jhonatan Fernando

Guia de procedimentos para construir um programa java no IDE Sun One Studio 4 update 1, Community Edition

Trabalhando com Mensagens. File > New > New Project. Uso de mensagens (Toast) Luiz Eduardo Guarino de Vasconcelos

Programação em Java para a Plataforma Android AULA 1. Primeiros Passos

Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Programação para a Plataforma Android Aula 13. Localização

Capítulo 02: Cadastro de Alunos

BroadcastReceiver. O que são mensagens broadcasts? Use notificações! (Serão explicadas em breve)

Visual Basic.NET Image Lists, Tree e List Views, Toolbars, Status e Progress Bars e Tab Controls Lista de Exercícios

Índice. 1. Introdução Instalação: Eclipse e Android Primeira aplicação em Android... 11

Prof: Ricardo Quintão Site:

Conceitos Básicos e Práticos do Android

VGM. VGM information. ALIANÇA VGM WEB PORTAL USER GUIDE June 2016

Universidade Federal do Paraná

Apresentação. Criando o projeto

Guia para criar aplicações simples em APEX/ Guide to create simple Apex applications (perte I)

ÍNDICE. 1. Requisitos de Sistema para o curso Smart English

Universidade da Beira Interior. Sistemas Distribuídos /2015 Curso: Engª Informática. Folha 11. JAX-RS: Java API for RESTful Web Services

Controles de entrada : caixas de seleção, botões de opção, listas suspensas, caixas de lista, botões, alternar, campos de texto, campo de data

Transcript name: 1. Introduction to DB2 Express-C

ATIVAR MINHA CONTA. Portal Minhas Operações do BID

Introdução à Engenharia ENG1000

Instalando o Eclipse e o Android

Ricardo R. Lecheta. Novatec

Criação de uma aplicação Web ASP.NET MVC 4

Exemplo de Aplicaça o Facebook

Programação para a Plataforma Android Aula 7. Mul$mídia

Minicurso: Android com Java - Jogos. Bem Vindos!

Desenvolvimento de um aplicativo básico usando o Google Android

Conectar a um smartphone utilizando uma conexão direta

Introdução à Ferramenta Construct 2

Android I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O P R O F E S S O R L E O N A R D O C. R. S O A R E S - L A R B A C K

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

INTRODUÇÃO AO SIMUL8

Desenvolvimento de Aplicativos Android

Programando Intenções. Prof. Fellipe Aleixo

Configurando o Ambiente de Desenvolvimento Android Studio No Windows Antes de qualquer trabalho ser iniciado no desenvolvimento de uma aplicação

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Desenvolvimento Android. Pontapé inicial...

Sistemas de Informação e Bases de Dados

Computação II Orientação a Objetos

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai. Esse livro está à venda em

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Mensagens. Para conhecimento. Renomear arquivos. Botão Direito no arquivo > Rafactor > Rename Shift + F6

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 4 PROF. EMILIO PARMEGIANI

User's Guide. Manual de Utilizador

U"lizando Pure Data em so3wares para Android. Antonio Deusany de Carvalho Junior

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

Rosa VS 9.1 HA - A falha alternativa DB, dois MySQL v e v estão no sistema

Software Testing with Visual Studio 2013 (20497)

Laboratório 01 NetBeans

PHILAE - SISTEMA DE RELACIONAMENTO - MANUAL DE INSTALAÇÃO

Curso online de Fundamentos em Android. Plano de Estudo

ANDROID, uma visão geral. Anderson Duarte de Amorim

Programação para Dispositivos Móveis

TICs IVINHEMA-MS

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

FAQ para Eee Pad TF201

Hello, Arduino! What's up, Android?

Transcrição:

Universidade Federal do Paraná Departamento de Informática Ciência da Computação Tópicos em Computação Android Ciclo de vida activities, tasks, modelo de navegação Prof. Eduardo Todt 2018

objetivos Conhecer melhor Intents Conhecer modelo de navegação do sistema Entender ciclo de vida de uma app Entender ciclo de vida de uma activity Entender stack de activities e tasks Explorar Navigation architecture component

Android tasks and back stack http://developer.android.com

Android navigation model Usuário move de activity em activity Botão <back> remove atual e mostra a anterior no topo da pilha Task é um conjunto de activities, por ex. Ler email responder email. Task pode usar activities de outras app, como por ex. Leitor de código de barras

Android navigation model Em geral activities são iniciadas por Intents Nova task marca uma activity como NEW_TASK Com NEW_TASK, atividades subsequentes na pilha fazem parte desta task, até que ocorra outra NEW_TASK A activity main (categoria LAUNCHER) de uma app é marcada NEW_TASK

System Level Navigation Home OS volta pilha de atividades até chegar na activiy home No boot, home activity deve estar no topo da pilha

System Level Navigation Back Remove atividade atual e volta para a próxima atividade na pilha Apps podem alterar este comportamento (cuidado!) Fecha janelas flutuantes (diálogos, popouts) Encerra action bars contextuais e remove highlight de itens selecionados Fecha teclado on-screen https://developer.android.com/design/patterns/navigation.html

System Level Navigation Recents Orientado a tasks, não atividades Ao selecionar uma task do menu recents, o conjunto de atividades é movido para o topo da pilha seguido da activity home

System Level Navigation Notifications Abrir activity por notificação é similar ao uso de recent Se activity não está na pilha uma instância é criada Se activity está na pilha, é colocado o conjunto de activities da task no topo da pilha junto com a activity home; então todas activities da task são retiradas até chegar na alvo

Application level navigation BACK Navega em ordem cronológica inversa das telas UP (action bars, Android >= 3.0) Navega em uma app baseado na hierarquia entre telas http://developer.android.com

Application level navigation Telas com múltiplos entry points ou telas irmãs não criam history (ex: Gmail) http://developer.android.com

Application level navigation Vistas detalhadas relacionadas criam histórico (ex. Apps do mesmo desenvolvedor no Google Play Store) http://developer.android.com

Application level navigation BACK vs UP https://developer.android.com/design/patterns/navigation.html

Application level navigation BACK vs UP gmail Novas tasks são sempre filhas da home Leitura recomendada: https://developer.android.com/training/design-navigation/

Application level navigation Navegação Horizontal Activities irmãs Tipo: Multi telas com seleção por botões

Application level navigation Navegação Horizontal Activities irmãs Tipo: Navegação em uma única tela: spinner http:// developer.android.com

Application level navigation Navegação Horizontal Activities irmãs Tipo: Navegação em uma única tela: tabs ActionBar.Tab Obsoleto Deprecated in API21 http://www.androidhive.info

Toolbar Toolbar ActionBar.Tab Obsoleto Deprecated in API21 Generalização da action bar https://developer.android.com/reference/android/widget/ Toolbar.html http://www.tutorialsbuzz.com/2015/04/android-lollipop-toolbarexample.html

Application level navigation Navegação Horizontal https://material.io/design/components/navigation-drawer.html#usage Tipo: Navegação em uma única tela: navigation drawer Nav drawer é transiente https://developer.android.com

Nav drawer class MainActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_main) val toolbar: Toolbar = findviewbyid(r.id.toolbar) setsupportactionbar(toolbar)... } } <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionbarsize"

Application level navigation Navegação Horizontal Activities irmãs Tipo: Navegação em uma única tela: swipe views http://developer.android.com

Ciclo de vida app Prioridade da aplicação é a prioridade mais alta de seus componentes Ordem de escolha para eliminar app 1. Prioridades mais baixas 2. Maior antiguidade Aplicações ligadas herdam maior prioridade (ex. content provider) Meier 2012

Ciclo de vida app Active processes (foreground) Activities no estado active Broadcast receivers executando onreceive event handler Services executando onstart, oncreate ou ondestroy event handlers Serviços em execução marcados para exec em foreground

Ciclo de vida app Visible processes Visíveis mas inativos hospedando activities visíveis mas não no foreground nem respondendo a eventos do usuário Started Service processes Processos hospedando serviços iniciados que não interagem com usuário. Apps com serviços em execução ainda são consideradas processos foregound. Se OS matar um serviço em exec quando houver recursos ele será re-iniciado, a menos que especificado em contrário

Ciclo de vida app Background processes (stopped) Processos hospedando activities não visíveis e que não possuem serviços executando. Grande número de processos em backgound eleitos para serem eliminados. No Android background não executa... Empty processes Manutenção dos processos na memória para acelerar novo start de apps

Activity lifecycle Active Activity no topo da pilha Visível, com foco e foreground Recebe entradas usuário OS tenta mantê-la viva a todo custo Se outra activity se torna ativa, esta é pausada

Activity lifecycle Paused Activity visível mas sem foco Outra transparente ou non full screen ocupou estado de ativa Tratada como ativa, mas não recebe eventos usuário Se totalmente oculta então é stopped

Activity lifecycle Stopped (background) Activity não visível Permanece em memória Mantém info estado Candidata a terminar se necessário liberar recursos Se sair ou fechar se torna inativa

Activity lifecycle Inactive Activity é inactive depois de eliminada e antes de ser lançada Removidas da pilha Precisam ser reiniciadas antes de serem visualizadas e utilizadas

Activity lifecycle Step pyramid Estados transientes callback methods <activity android:name=".mainactivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> http://developer.android.com

Activity lifecycle Step pyramid @Override public void ondestroy() { super.ondestroy(); // Always call the superclass } // Stop method tracing that the activity started during oncreate() android.os.debug.stopmethodtracing(); http://developer.android.com

Activity lifecycle Step pyramid Indo para paused, já libera recursos Override public void onpause() { super.onpause(); // Always call the superclass method first } // Release the Camera because we don't need it when paused // and other activities might need to use it. if (mcamera!= null) { mcamera.release() mcamera = null; } http://developer.android.com

Activity lifecycle Step pyramid Resume inicializa recursos @Override public void onresume() { super.onresume(); // Always call the superclass method first } // Get the Camera instance as the activity achieves full user focus if (mcamera == null) { initializecamera(); // Local method to handle camera init } http://developer.android.com

Activity lifecycle Step pyramid finish( ) http://developer.android.com

Activity lifecycle Não há diferença para usuário entre activity movendo de paused, stopped ou inactive para active Importante salvar toda info de estado e UI quando activity é pausada ou parada

oncreate() oncreate() é overrided em todas activities Chamada pelo OS quanto a activity é criada pela primeira vez Setup estático: criar views, ligar dados a listas,... Inicializa UI e objetos de dados SavedInstanceState tem estado prévio, pode recuperá-lo Sempre seguido de onstart() Necessário chamar a superclasse dela Contém código necessário para iniciar activity Falta gera exceção

onstart() Chamada quando uma activity está se tornando visível Seguido de onresume() se foreground ou onstop() se hidden Inicia animações de UI, audio

onrestart() Chamada depois que activity foi parada, antes de ser iniciada novamente Seguido de onresume() se activity vai para foreground ou onstop() se hidden para usuário

onresume() Chamada quando activity inicia interação com usuário Lugar para reiniciar animações, atualizar UI, reiniciar preview de camera, áudio e vídeo Neste momento activity está no topo da activity stack Seguida de onpause()

onpause() Chamada quando sistema está prestes a retomar uma activity prévia, activit preparando para entrar em backgoround Commit mudanças para dados persistentes Parar animações, audios e outras coisas que consomem CPU Próxima activity não retoma enquanto este método callback não retorna Seguido de

onstop() Chamado quando activity não é mais visível ao usuário, devido a outra ter retomado Momento adequado para salvar dados Seguido de onrestart() se a activity retorna para interagir com usuário ou ondestroy() se descontinuada

ondestroy() Último método antes de destruir activity Provocado por chamada a finish() na activity ou por o OS estar destruindo-a temporariamente para liberar recursos Se activity inclui processos em background, destruição pode levar a memory leak se recursos não forem liberados e processos parados

The navigation architecture component https://developer.android.com/topic/libraries/ architecture/navigation/ 6 Destinos 5 Ações Navigation graph

Projeto com navegação Before you can create a navigation graph, you must set up the Navigation Architecture Component for your project. To set up your project in Android Studio, perform the following steps. If using a Beta, Release Candidate, or Stable build, you must enable the Navigation Editor. Click File > Settings (Android Studio > Preferences on Mac), select the Experimental category in the left pane, check Enable Navigation Editor, and then restart Android Studio. Add the following Navigation Architecture Component to your app or module's build.gradle file. For more information on adding Archtecture Components to build.gradle, refer to Adding components to your project. In the Project window, right-click on the res directory and select New > Android Resource File. The New Resource File dialog appears. Type a name in the File name field, such as "nav_graph". Select Navigation from the Resource type drop-down list. Click OK. The following occurs: A navigation resource directory is created within the res directory. A nav_graph.xml file is created within the navigation directory. The nav_graph.xml file opens in the Navigation Editor. This xml file contains your navigation graph. https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing

Editor de Navegação Navigation editor

Tarefa Vá para o link do navigation editor Estude material apresentado Proponha e implemente app com grafo de navegação

Referências Exemplos, listagens, conceitos, imagens, obtidos do livro do Peter Meier (Professional Android 4 Application Development), do livro Deitel (Android 6 for Programmers), do site www.developer.android.com, do fórum www.stackoverflow.com, e de outras fontes, quando indicado.