onStartCommand()에서 서비스에 보류중인 인 텐트를 전달하려고합니다. 그러나 일단 알람이 설정되면 계속해서 트리거됩니다. 오전 4시와 오후 8시에 두 개의 경보를 설정하고 있습니다. 나는 오전 4시에 알람을 보낼 의도가 생기면 오후 8시에 알람을 설정해야하고 오후 8시에 알람을 보낼 의도가있을 때 오전 4시 알람을 설정해야한다는 논리를 달성하고자했습니다. 그러나 예기치 않게 작동하고 있습니다. 오후 8시 의도가 전달되면 4 초 안에 오전 8시에 다시 알람을 설정하는 오전 4시에 대한 의도가 전달되고이주기가 반복됩니다. 어디서 실수합니까? 제발 나를 안내 해줘.시간이 다르기는하지만 알람 관리자가 계속 트리거합니다.
public class Alarmclass extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
private String Stat;
private boolean GetTypeofAlarm() {
Log.e("Getting type", "Getting alarm types");
boolean alarmtype = false;
int hours;
Calendar c = Calendar.getInstance();
hours = c.get(Calendar.HOUR_OF_DAY);
if (hours <= 5) {
alarmtype = false;
} else if (hours >= 20) {
alarmtype = false;
} else if (hours >= 5 && hours <= 20)
alarmtype = true;
return alarmtype;
}
@Override
public void onCreate() {
super.onCreate();
if (!GetTypeofAlarm()) {
StartLocAlarm();
}else{
StopLocAlarm();
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.hasExtra("START")) {
if(intent.getStringExtra("START").equals("START_ALR")) {
StopLocAlarm();
}
}else if(intent.hasExtra("STOP")){
if(intent.getStringExtra("STOP").equals("STOP_ALR")) {
StartLocAlarm();
}
}
Intent Actint = new Intent(this, Startup_Activity.class);
Actint.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 2422, Actint, 0);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Admin")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pendingIntent)
.setContentText(Stat)
.setOngoing(true).build();
startForeground(201, notification);
return START_STICKY;
}
private void StartLocAlarm(){
AlarmManager alrmMgr;
PendingIntent alarmIntent;
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY, 4);
alrmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, Alarmclass.class);
intent.putExtra("START", "START_ALR");
alarmIntent = PendingIntent.getService(this, 0, intent, 0);
alrmMgr.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),alarmIntent);
Log.e("In onstart","Setting alarm at 5 AM");
Stat = "Alarm set for 5 AM";
}
private void StopLocAlarm(){
AlarmManager alarmMgr;
PendingIntent alarmIntent;
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY, 20);
alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
Intent intent2 = new Intent(this, Alarmclass.class);
intent2.putExtra("STOP", "STOP_ALR");
alarmIntent = PendingIntent.getService(this, 1, intent2, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), alarmIntent);
Log.e("In onstart", "Setting alarm at 8 PM");
Stat = "Alarm set for 8 PM";
}
}
을 그 여전히 지속적으로 순환. 난 이해가 안 –
... 할 – Dus
아니요 사용자 상호 작용없이 알람이 자동으로 설정되도록하려는 경우 –