Você está na página 1de 28

Conceitos de Android

Aplicações Android
 As aplicações são empacotadas em um
arquivo .apk (Android package)
 Contém código compilado + arquivos usados
pela aplicação
 São baixados da Loja do Android (Android
Play)
 Mas podem ser distribuídos e instalados de outras
maneiras
Comportamento em execução
 Cada aplicação é um usuário diferente no android
(linux multi-user)
 Por padrão, cada aplicação recebe um único user id
(conhecido somente pelo Android)

 Arquivos criados por uma aplicação só são


acessados por ela

 Cada aplicação roda sua própria VM

 O Android inicia o processo quando qualquer um


dos componentes da aplicação precisa executar
COMPONENTES DE
APLICAÇÃO
Componentes no Android
 Existem quatro tipo distintos
 Representam blocos de construção que
ajudam a definir o comportamento global
da sua aplicação
 Cada um possui um papel bem específico

 Cada um possui um ciclo de vida distinto


Ciclo de Vida dos componentes
Android
 Modelo de Programação diferente do
convencional
 Similar ao desenvolvimento de Applets,
Servlets e EJBs
 A criação, destruição e gerencia dos
elementos é feita pelo “container”
 O programador não define os estados do

componente
 Só define o que fazer quando o estado muda
Tipos de componentes
 Activities
 Representam a interface com o usuário
 Services
 Executam em background
 Content Providers
 Gerenciam dados compartilhados entre
aplicações
 Broadcast Receivers
 Respondem a eventos do sistema
Activities
 Uma Activity representa uma tela
 Ex. Aplicação de email
 Uma atividade para a lista de novos emails
 Outra atividade para a tela de composição de email
 Outra atividade para a tela de leitura de um email

 Cada Activity é independente da outra, mesmo que


em conjunto trabalhem para um único próposito

 Aplicações podem iniciar outra Activity (Mesmo outra


aplicação)
 Ex. Uma aplicação relacionada com o gerenciamento de
fotos pode iniciar a Activity de composição de email para
enviar a foto para um amigo
Analogia de Aplicações Android e Web Sites

Web Sites Aplicações Android


 Conjunto de páginas  Conjunto de Activities
 Contém uma “home  Contém uma Activity
page” “MAIN”
 Permite navegação entre  Permite navegação entre
páginas Activities
 Pode linkar páginas de  Pode iniciar Activities de
outros sites outras aplicações
Implementando uma Activity
 Deve definir uma subclasse de
android.app.Activity
Implementando uma Activity

 Deve implementar métodos


de callback que serão
chamados ao longo do ciclo
de vida do componente
Ciclo de vida de uma Activity

Activity não existe em


memória e é iniciada

Activity está interagindo


com o usuário

Activity perdeu o foco,


mas ainda é visível

Activity não é visível na


tela

Activity foi removida da


memória
Implementando uma Activity
 Deveser declarada no
AndroidManifest.xml

<manifest ... >


<application ... >
<activity android:name=".HelloAndroid" />
...
</application ... >
...
</manifest >
Services
 São componentes que executam em background

 Não possuem interface com o usuário

 Podem ser iniciados por uma aplicação e continuarem em


execução mesmo após o término da aplicação

 Exemplos:
 Um serviço pode tocar música em background, enquanto o
usuário está em outra aplicação

 Uma serviço fica monitorando se existe alguma informação nova


no servidor e atualiza o banco de dados da aplicação
Implementando um Service
 Deve definir uma subclasse de
android.app.Service

 Deve ser declarada no AndroidManifest.xml

<manifest ... >


...
<application ... >
<service android:name=".ExampleService" />
...
</application>
</manifest>
Implementando um Service

 Deve implementar métodos de callback que serão


chamados ao longo do ciclo de vida do
componente
Exemplo de Service

public class HelloService extends Service {

@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "Hello Service Started", Toast.LENGTH_SHORT).show();
super.onStart(intent, startId);
}
@Override
public void onDestroy() {

Toast.makeText(this, "Hello Service Stopped", Toast.LENGTH_SHORT).show();


}
@Override
public IBinder onBind(Intent arg0) {
return null;
}

}
Content Providers
 Armazenam e gerenciam dados, fazendo-os
acessíveis para todas as aplicações
 Maneira mais adequada de compartilhar dados entre
aplicações
 Já existem vários provedores de conteúdo na
plataforma
 Manipulação de dados comuns (audio, video, images,
personal contact information)
 Estão presentes no pacote android.provider.

 Você pode criar seus próprios provedores de


conteúdo
Content Providers
 Aderem ao principio do CRUD
Informações de Contato

Diferentes aplicações!
Implementando um Content
Provider
 Deve definir uma subclasse de
android.app.ContentProvider

 Deve ser declarada no AndroidManifest.xml

<provider android:name="com.example.autos.AutoInfoProvider"
android:authorities="com.example.autos.autoinfoprovider"
. . . />
</provider>
Implementando um Content
Provider
 Deve implementar os métodos:
query()
insert()
update()
delete()
getType()
onCreate()

 Deve ser acessado a partir da URI:

content://com.example.autos.autoinfoprovider
Broadcast Receivers
 Componente que responde a “anúncios”
(eventos) de todo o sistema
 Diversos broadcast são gerados pelo sistema
 Aviso de bateria fraca
 Aviso que a tela foi desligada
 Recebimento de SMS
 Aplicações também podem gerar broadcast
 Aviso que um download completou
 Aviso que um determinado algoritmo terminou
Implementando um
BroadcastReceiver
 Deve definir uma subclasse de
android.app.BroadcastReceiver

 Deve ser declarada no AndroidManifest.xml

<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.teste.action.SAVE"/>
</intent-filter>
</receiver>
Enviando e recebendo mensagens
de broadcast
 Mensagens de broadcast são
representadas por objetos do tipo Intent

 O método sendBroadcast é usado para


enviar mensagens de broadcast

 O BroadcastReceiver deve implementar o


método onReceive(Context, Intent)
Exemplo: Recebendo notificação
de Ligação

Definindo o receiver no Manifest...

<application>
.....
<receiver android:name=".PhoneReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
Exemplo: Recebendo notificação
de Ligação
Criando a classe Receiver...

public class PhoneReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {


Bundle extras = intent.getExtras();

if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);

if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
}
}
}
FIM

Você também pode gostar