无法从countDownTimer启动活动

时间:2012-12-05 16:31:06

标签: android broadcastreceiver countdowntimer

我在广播接收器中有一个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){     

        }                     
    } 

我需要主类作为广播接收器来收听电话状态......

1 个答案:

答案 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);