我编的一个程序,
在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");
}
}
}
在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");
}
}
}
不停的打印出了Log.i("Orange=", "130");吗?