Objetivo:
Realizar una acción que deseemos tras esperar unos segundos.
Captura de pantalla
Código fuente java (/src/Principal.java):
[sourcecode language=”java”]
package com.acciontrassegundos.tutorialandroid;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
public class Principal extends Activity {
public static int MILISEGUNDOS_ESPERA = 5000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* Al pulsar el botón ejecutamos la funcion de espera
* @param v
*/
public void onClick_AccionTrasSegundos(View v) {
esperarYCerrar(MILISEGUNDOS_ESPERA);
}
/**
* Espera y cierra la aplicación tras los milisegundos indicados
* @param milisegundos
*/
public void esperarYCerrar(int milisegundos) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// acciones que se ejecutan tras los milisegundos
finalizarApp();
}
}, milisegundos);
}
/**
* Finaliza la aplicación
*/
public void finalizarApp() {
finish();
}
}
[/sourcecode]
Código fuente XML (/res/layout/main.xml):
[sourcecode language=”xml”]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="by TutorialAndroid.com\n\nPulsa el botón, y tras 5 segundos la aplicación se cerrará automáticamente.\n" />
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="Cerrar App tras 5 segundos"
android:onClick="onClick_AccionTrasSegundos" />
</LinearLayout>
[/sourcecode]
Descárgate el código aquí
Funciona perfecto. Gracias!
gracias! Estoy creando un juego de memoria para Android y necesario para que el sistema espere unos 2 segundos para comparar las tarjetas. Utilizei Threads, TimerTasks y no funciono. Y uno Handler funciono! :)
gracias por la función (y)
lo utilice para inicializar una nueva actividad
es posible enviar dos textView que contiene la latitud y la longitud a mysql de esta manera.. en este momento guardo esos datos con un boton, pero quiero que se guarden cada 10 minutos sin necesidad de presionar el boton.