我正在运行一个执行do while循环的Intent服务。
当按下按钮时,服务从活动开始。
问题是当我再次按下按钮时,从第一次按下的服务旁边开始一项新服务。
我希望停止以前的服务,并使用新服务来替换它。
基本上我想知道如何杀死服务或将数据传递给正在运行的线程以便更改do条件。我不知道如何处理这个。
感谢您的帮助。
startAlarm.setOnClickListener(new View.OnClickListener() {
int x=0;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getActivity().startService(alarmService);
System.out.println("Service has started.");
}
});
公共类AlarmService扩展了IntentService {
public AlarmService() {
super("Alarm run service");
// TODO Auto-generated constructor stu
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
int hour = intent.getExtras().getInt("hourval");
int minute = intent.getExtras().getInt("minval");
System.out.println("Hour is : " + hour + " minute is : " + minute);
int currentHour;
int currentMinute;
do{
System.out.println("in the loop");
Calendar cal = Calendar.getInstance();
currentHour = cal.get(Calendar.HOUR_OF_DAY);
currentMinute = cal.get(Calendar.MINUTE);
System.out.println(currentHour + ":" + currentMinute + "and " + hour +":" +minute);
}while(currentHour != hour || currentMinute != minute);
System.out.println("Left loop");
Intent alarmRingStart = new Intent(getApplicationContext(),AlarmRing.class);
alarmRingStart.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(alarmRingStart);
System.out.println("Alarm has gone off");
}
@Override
public void onDestroy(){
super.onDestroy();
}
}