Вы можете остановить службу по телефону
context.stopService (Intent намерение);
Это намерение должно быть один используется для запуска самого сервиса, например:
Intent i = new Intent(context, MyService.class);
context.stopService(i);
Теперь вы должны запустить этот код в регулярные промежутки времени, так что вы можете быть уверены, что вы убиваете службу не используя слишком много CPU. Это может быть достигнуто с помощью AlarmManager, вы можете найти документацию здесь: http://developer.android.com/reference/android/app/AlarmManager.html
Вы должны будете получить экземпляр AlarmManager, установите его повторять каждые N миллисекунд и запустить приемник:
int interval = 120000;
Intent i = new Intent(context, MyBroadcastReceiver.class);
PendingIntent action = PendingIntent.getBroadcast(context, 0, i, 0);
AlarmManager am = Context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, action);
Interval находится в миллисекундах и устанавливает, как часто будет срабатывать ваш «onReceive()». Чем дольше интервал, тем меньше батареи вы используете.
И MyBroadcastReceiver будет класс, который расширяет BroadcastReceiver и переопределяет метод OnReceive()
@Override
public void onReceive(Context context, Intent intent)
{
//STOP THE SERVICE HERE
}
Эта ссылка поможет вам задать лучший вопрос. http://stackoverflow.com/about Вы должны начать с документации Google или Android –