我在广播接收器中有一个CountDownTimer应该启动一个Activity。
但经过几次尝试后,我无法启动活动......
以下是我在上次尝试后的最后一次尝试的代码片段,但无法识别startActivityForResult ...
public class GSMCountDownTimer extends CountDownTimer {
public GSMCountDownTimer(long millisInFuture, long countDownInterval)
{
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish(){
if (reseau == false){
Intent fIntent = new Intent();
fIntent.setClassName("com.atelio.smart", "com.atelio.smart.AlerteGsm");
startActivityForResult(fIntent,0);
}
}
@Override
public void onTick(long millis){
}
}
我需要主类作为广播接收器来收听电话状态......
答案 0 :(得分:2)
您不应在broadCastReciever中使用CountDownTimer。
检查Reciever Lifecycle Documentation。无法在broadcastRecievers中完成任何异步操作。代码从onRecieve返回后,Reciever对象不再处于活动状态。
所以请改用AlarmManager。
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent fIntent = new Intent();
fIntent.setClassName("com.atelio.smart", "com.atelio.smart.AlerteGsm");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, fIntent, 0);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, millisInFuture);
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);