我正在尝试在应用程序的通知中进行倒计时:当应用程序收到通知时,通知有 20 秒的时间消失。这是我的代码,但是我的应用程序在收到通知后立即中断,希望有人可以帮助我,谢谢:
package com.taxicell;
import java.util.ArrayList;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
/**
*Falta por descubrir
* @author sergio
*/
public class Notifica {
private Context context;
private String data[];
public timer timer;
public void Nueva(Context con,String dat){
Log.v("app", "nueva notificacion con los datos: "+dat);
context = con;
NotificationManager notificador =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Notification notifica=new Notification(R.drawable.taxicell,"TaxiCell !",System.currentTimeMillis());
Notification notifica=new Notification(R.drawable.taxicell,"TaxiCell !",30000);
notifica.defaults |= Notification.DEFAULT_SOUND;
notifica.defaults |= Notification.DEFAULT_LIGHTS;
notifica.flags |= Notification.FLAG_AUTO_CANCEL;
notifica.defaults |= Notification.DEFAULT_SOUND;
notifica.defaults |= Notification.DEFAULT_VIBRATE;
String mensajin="";
Intent intentoNotifica;
data=dat.split(",");
if(Validacion(dat)){
intentoNotifica=new Intent(context,Mensaje.class);
Bundle datos = new Bundle();
datos.putString("msj",dat );
datos.putInt("tipo", 0);
intentoNotifica.putExtras(datos);
mensajin="Solicitud de Servicio !";
}else{
intentoNotifica=new Intent(context,Mensaje.class);
Bundle datos = new Bundle();
datos.putString("msj",dat);
datos.putInt("tipo", 1);
intentoNotifica.putExtras(datos);
mensajin="Asignación de Saldo !";
}
Log.v("pm", "1");
timer = new timer();
Log.v("pr", "2");
timer.execute("ejecucion");
PendingIntent penIntent = PendingIntent.getActivity(context, 0, intentoNotifica,android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
notifica.setLatestEventInfo(context,"TaxiCell",mensajin, penIntent);
notificador.notify(1,notifica);
}
....
....
private class timer extends AsyncTask<String, Integer, Integer>{
@Override
protected void onPreExecute() {
Log.v("loop","0");
}
protected Integer doInBackground(String... urls) {
Log.v("loop","1");
int i=10;
while( i > 0) {
if(isCancelled()){break;}
else{
try {Thread.sleep(1000); }
catch (InterruptedException e) {}
publishProgress(i); //Actualizamos los valores
Log.v("loop","2 es: "+i);
i--;
}
}
return i;
}
@Override
protected void onProgressUpdate (Integer... valores) {
}
@Override
protected void onPostExecute(Integer res) {
rechazarServ();
}
}
}