domingo, 30 de junho de 2013

Gerenciando a vida útil da ação



DEPENDENCIas e PRé-REQUISIToS
Como criar um projeto android (veja Criando um projeto Android)
Conforme o usuário fica a navegar entre os aplicativos, saindo e voltando, as instancias de Ação do seu aplicativo transitam entre os diferentes estados do sua vida util. Durante um instante , quando a ação inicia pela primeira vez, ocupa o primeiro plano do sistema e recebe o foco do usuário. Durante este processo, o sistema do Android chama uma serie de métodos da vida útil na ação ao qual você configurou a interface do usuário e outros componentes. Se o usuário realizar uma ação que irá iniciar outra ação, ou trocar para outro aplicativo, o sistema chama um conjunto de métodos da vida útil para sua atividade e a move para o segundo plano (aonde a ação não será mais visível, mas a instancia e o estado permanecem intactos).

Dentro das chamadas aos métodos de vida útil, você pode declarar como sua ação se comporta quando o usuário sai e entra novamente na ação. Por exemplo, se você está construindo um player de vídeo online, você pode querer parar o vídeo e encerrar a conexão com a rede quando o usuário trocar para outro aplicativo. Quando o usuário retornar, você pode reconectar com a rede e permitir que o usuário reassuma o vídeo a partir do mesmo ponto.

As próximas postagens explicaram a importância da vida útil dos métodos de chamada que cada instancia de Ação recebe e como você pode usar para que sua ação faça o que o usuário espera e não consuma os recursos do sistema quando sua atividade não precisar mais dele.

Próximas Lições


Aprender o básico sobre a vida útil da ação, como o usuário pode iniciar seu aplicativo, e como realizar a criação básica da ação.

Aprender o que acontece quando sua ação é suspensa (parcialmente oculta) e retomada e o que você deve fazer durante as mudanças de estado.

Aprender o que acontece quando o usuário abandona completamente a sua ação e retorna depois.

Aprender o que acontece quando sua ação é destruída e como você ira reconstruir o estado da ação quando necessário.

quinta-feira, 20 de junho de 2013

Caminhando - parte final, O primeiro aplicativo

Recebendo a Intenção


Cada  Ação é chamada por uma Intenção, indiferente de como o usuário navegue. Você pode pegar a Intent que começou a sua ação ao chamar getIntent() e recupere os dados contidos nele.
Dentro da classe DisplayMessageActivity do método  onCreate(), pegue a intenção e extraia a mensagem entregue por MainActivity:
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Mostrando a Mensagem


Para mostrar a mensagem na tela, criar um componente TextView e definir o texto usando setText(). Então adicione o TextView como a visualização principal do esboço da ação ao passa-lo para setContentView().
O método completo onCreate() para DisplayMessageActivity agora se parece com isto:
@Override
public void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);

   
// Get the message from the intent
   
Intent intent = getIntent();
   
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

   
// Create the text view
   
TextView textView = new TextView(this);
    textView
.setTextSize(40);
    textView
.setText(message);

   
// Set the text view as the activity layout
    setContentView
(textView);
}



Você pode  agora executar o aplicativo, Quando este abrir, digite uma mensagem no campo texto, clique Enviar, e a mensagem irá aparecer na segunda atividade.

Figura 1. Inicia a ação escrevendo a mensagem e clicando no botão.


Figura 2. Mensagem enviada no aplicativo final, rodando em um Android 4.0.
È isso ai, você construiu seu primeiro aplicativo para Android!
Para aprender mais sobre aplicativos Android, continue seguindo as lições básicas de treinamento que postaremos aqui.



sábado, 15 de junho de 2013

Caminhando - 2ª parte, Iniciando a Segunda Ação

Para iniciar a ação, chama startActivity() e passa para sua Intent. O sistema recebe está chamada e inicia a instancia de  Activity especificada pelo Intent.
Com este novo código, o método completo sendMessage() que chama o botão enviar se parece com isto:
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
   
Intent intent = new Intent(this, DisplayMessageActivity.class);
   
EditText editText = (EditText) findViewById(R.id.edit_message);
   
String message = editText.getText().toString();
    intent
.putExtra(EXTRA_MESSAGE, message);
    startActivity
(intent);
}
Agora você precisa criar a classe DisplayMessageActivity em ordem para isto funcionar.
Criando a Segunda Ação



Figura 1. O novo ajudante de ação do Eclipse.
Para criar uma nova ação usando o Eclipse:
1.    Clique New   na barra de ferramentas.
2.    Na janela que aparecer, abra a pasta Android e selecione Android Activity. Clique Next.
3.    Selecione BlankActivity e clique Next.
4.    Preencha os detalhes da ação:
o    Project: MeuPrimeiroAp
o    Activity Name: DisplayMessageActivity
o    Layout Name: activity_display_message
o    Title: Minha Mensagem
o    Hierarchial Parent: com.example.meuprimeiroap.MainActivity
o    Navigation Type: None
Clique Finish.
Se você estiver usando uma IDE diferente ou linha de comando, crie um novo arquivo com o nome DisplayMessageActivity.java no diretório de projetos src/ , ao lado do arquivo original MainActivity.java.
Abra o arquivo DisplayMessageActivity.java . Se estiver usando o Eclipse para criar esta ação:
·         A classe já incluída na implementação requer o método onCreate().
·         Também tem a implementação do método onCreateOptionsMenu() , mas você não precisara disto para o aplicativo, assim você pode removê-lo.
·         Também tem a Implementação do onOptionsItemSelected() que manipula o comportamento da barra de ação Up. Mantenha este na forma em que está.
Devido as APIs  ActionBar estarem disponíveis apenas no HONEYCOMB (API nível 11) e mais alto, você deve adicionar a condição em torno do método getActionBar() para checar a versão atual da plataforma. Adicionalmente, você deve adicionar a tag @SuppressLint("NewApi") no método  onCreate() para evitar erros do lint .
A classe DisplayMessageActivity deve parecer com isto:
public class DisplayMessageActivity extends Activity {

   
@SuppressLint("NewApi")
   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.activity_display_message);

       
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
       
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
           
// Show the Up button in the action bar.
            getActionBar
().setDisplayHomeAsUpEnabled(true);
       
}
   
}

   
@Override
   
public boolean onOptionsItemSelected(MenuItem item) {
       
switch (item.getItemId()) {
       
case android.R.id.home:
           
NavUtils.navigateUpFromSameTask(this);
           
return true;
       
}
       
return super.onOptionsItemSelected(item);
   
}
}
Se usar uma IDE alem do Eclipse, atualize sua classe DisplayMessageActivity com o código acima.
Todas as subclasses de  Activity devem implementar o metodo onCreate(). O sistema chama isto quando cria uma nova instancia da ação. Este método é aonde você deve definir o esboço da ação com o método setContentView() e será aonde você deve realizar a configuração inicial para os componentes da ação.
Nota: Se você esta usando uma IDE diferente do Eclipse, seu projeto não contem o esboço activity_display_message que é requisitado por setContentView(). Isto está certo porque você irá atualizar este método depois e não irá usar o esboço.

Adicionando o texto do titulo
Se você estiver usando o Eclipse, você pode pular a próxima seção, porque o modelo fornece o texto do titulo para sua nova ação.
Se você estiver usando uma IDE diferente do Eclipse, adicione o novo titulo da ação no arquivo strings.xml :
<resources>
    ...
   
<string name="title_activity_display_message">Minha Mensagem</string>
</resources>
Anexar ao manifesto
Todas as ações devem ser declaradas em seu arquivo de manifesto,  AndroidManifest.xml, usando o elemento <activity>.
Quando você usar as ferramentas do Eclipse para criar a ação, irá criar uma entrada padrão. Caso esteja usando outra IDE, você precisara adicionar manualmente a entrada do manifesto, deverá ficar parecido com isto:
<application ... >
    ...
   
<activity
       
android:name="com.example.meuprimeiroap.DisplayMessageActivity"
       
android:label="@string/title_activity_display_message"
       
android:parentActivityName="com.example.meuprimeiroap.MainActivity" >
       
<meta-data
           
android:name="android.support.PARENT_ACTIVITY"
           
android:value="com.example.meuprimeiroap.MainActivity" />
   
</activity>
</application>
O atributo  android:parentActivityName declara o nome desta ação de uma ação matriz dentro da hierarquia lógica do aplicativo. O sistema usa este valor para implementar o comportamento padrão da navegação, tais como o Up navigation no Android 4.1 (API nível 16)  e acima. Você pode prover o mesmo comportamento de navegação para versões mais antigas do Android para usa a Biblioteca de Suporte e adicionar o elemento <meta-data> como mostrado aqui.
Nota: O SDK do Android que você tiver, deverá já ter incluído as mais atuais bibliotecas de suporte. Está embutido com o combo do ADT, mas caso esteja usando uma IDE diferente, você deverá ter instalado durante o passo de Adicionando Plataformas e Pacotes. Quando usar os modelos no Eclipse, o suporte a biblioteca será automaticamente adicionado para seu projeto de aplicativo ( você consegue ver o arquivo JAR da biblioteca na lista de dependência). Se não estiver usando o Eclipse, você precisa adicionar manualmente a biblioteca para seu projeto – siga o guia para configura a biblioteca de suporte para então retornar aqui.

Se você estiver desenvolvendo com o Eclipse, você pode rodar o aplicativo agora, mas nada irá ocorrer. Clicando no botão Enviar inicia a segunda atividade mas irá usar o esboço padrão do “Hello World” fornecido pelo modelo. Em breve você estará atualizando a ação para mostrar o texto personalizado, portanto se você estiver usando uma IDE diferente, não se preocupe com o aplicativo ainda não compilar.