停止Intent Service或更新数据android

时间:2014-08-08 02:44:51

标签: android android-service intentservice

我正在运行一个执行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();
}

}

1 个答案:

答案 0 :(得分:0)

您可以先stopService,然后在service.onDestroy设置一个标志,指示while循环应退出。你应该经常检查那个标志的值。