我编的一个程序,
在activity中设定一个闹钟和间隔时间,
然后退出activity,
闹钟时间到了就拨号,
然后等间隔时间,再一次拨号,
这样一直循环下去,
第一个闹钟是在activity中设定的,
后面的闹钟是在BroadcastReceiver里面设定的,
奇怪的是,
第一个闹钟是正常的,
后面的闹钟并没有间隔设定的时间再拨号,
而是一直不停的拨号,
这是什么原因?代码如下:package com.example.timd;import java.util.Calendar;import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;public class main_2 extends BroadcastReceiver{

  String strNum2;
  Integer sh, sm, eh, em, nh, nm, vh, vm, it;
  @Override
  public void onReceive(Context context, Intent intent)
  {
Log.i("Orange=", "130");
Bundle b1 = intent.getExtras();
strNum2 = b1.getString("number");
sh = b1.getInt("sh");
sm = b1.getInt("sm");
eh = b1.getInt("eh");
em = b1.getInt("em");
nh = b1.getInt("nh");
nm = b1.getInt("nm");
it = b1.getInt("it");
    /* create Intent,调用AlarmAlert.class */
// Log.i("Orange_s_num_2=", main.s_num);
    Intent i = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ strNum2));
        
    Bundle bundleRet = new Bundle();
    i.putExtras(bundleRet);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
    
    
    // 判断是否需要下一次拨号
    if (!((nh*60 + nm + it) > (eh*60 + em)))
    {
     vh = nh;
     if ((nm + it) == 60)
     {
     vh++;
     vm=0;
     }
     else if ((nm + it) > 60)
     {
     vh++;
     vm = nm + it -60;
     }
     else
     {
     vm = nm +it;
     }
    
     nh = vh;
     Log.i("Orange_nh=", String.valueOf(nh));
     nm = vm;
     Log.i("Orange_nm=", String.valueOf(nm));      // 下一次拨号
     Intent i2 = new Intent(context, main_2.class);
     b1.putInt("nh", nh);
     b1.putInt("nm", nm);
     i2.putExtras(b1);
     /* 创建PendingIntent */
     PendingIntent sender=PendingIntent.getBroadcast(
                           context, 0, i2, 0);
    
     Calendar c=Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY,nh);
c.set(Calendar.MINUTE,nm);
c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND,0);

AlarmManager am;
am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),
sender
               );
    
     Log.i("Orange=", "135");
    }
  }
}