응용 프로그램에서 알람 관리자와 리시버를 구현했는데 모두 완벽하게 작동합니다. 내가 가지고있는 문제는 응용 프로그램을 닫으려면 뒤로 버튼을 누르면 알람이 지정된 시간에 실행되지 않는다는 것입니다. 아래는 내가 사용하고 코드입니다 :뒤로 버튼을 누르면 안드로이드 알람이 작동하지 않습니다.
내 수신기 코드
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("SERVICE RECIEVED");
Intent service1 = new Intent(context, MyAlarmService.class);
context.startService(service1);
}
}
내 알람 서비스 코드
public class MyAlarmService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Intent _intent = new Intent(getBaseContext(), FirstCallActivity.class);
_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(_intent);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
시작 알람 코드
public void startAlarm(Calendar cal) {
// Create a new PendingIntent and add it to the AlarmManager
Intent intent = new Intent(this, FirstCallActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 12345,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
매니페스트 코드 (응용 프로그램 태그 내에서)
<service
android:name=".MyAlarmService"
android:enabled="true" />
<receiver android:name=".MyReceiver" />
왜 이런 일이 일어 났는지 설명 할 수 있습니까? 응용 프로그램이 완전히 닫힌다면 아무 일도 일어나지 않을 것입니다. 그러나 응용 프로그램이 백그라운드에서 실행 중이기 때문에이 문제를 일으키는 이상한 단추가있는 것 같습니다.
감사합니다.
여기서'startAlarm() '을 (를) 호출 하시겠습니까? 나는 어디에도 그것을 보지 못한다. 또한, 뒤로 버튼을 누르거나 전혀 실행되지 않으면 예상대로 실행되지 않습니까? – codeMagic
알람은 BaseActivity 클래스의 주 활동에서 호출됩니다. 앱을 열어 두거나 최소화하면 제대로 작동하지만 다시 버튼을 누르면 다시 앱을 실행하기 전까지 앱이 실행되지 않고 실행됩니다. –
수신자는 어디에 적합합니까? 당신은 어디에서나 방송하지 않습니다. 또한 최종 목표는 무엇입니까? 알람으로 활동을 시작 하시겠습니까? 나는 의도 된 실행의 흐름을 따르지 않을 것이다. –