2014-12-19 2 views
-1

응용 프로그램에서 알람 관리자와 리시버를 구현했는데 모두 완벽하게 작동합니다. 내가 가지고있는 문제는 응용 프로그램을 닫으려면 뒤로 버튼을 누르면 알람이 지정된 시간에 실행되지 않는다는 것입니다. 아래는 내가 사용하고 코드입니다 :뒤로 버튼을 누르면 안드로이드 알람이 작동하지 않습니다.

내 수신기 코드

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" /> 

왜 이런 일이 일어 났는지 설명 할 수 있습니까? 응용 프로그램이 완전히 닫힌다면 아무 일도 일어나지 않을 것입니다. 그러나 응용 프로그램이 백그라운드에서 실행 중이기 때문에이 문제를 일으키는 이상한 단추가있는 것 같습니다.

감사합니다.

+0

여기서'startAlarm() '을 (를) 호출 하시겠습니까? 나는 어디에도 그것을 보지 못한다. 또한, 뒤로 버튼을 누르거나 전혀 실행되지 않으면 예상대로 실행되지 않습니까? – codeMagic

+0

알람은 BaseActivity 클래스의 주 활동에서 호출됩니다. 앱을 열어 두거나 최소화하면 제대로 작동하지만 다시 버튼을 누르면 다시 앱을 실행하기 전까지 앱이 실행되지 않고 실행됩니다. –

+0

수신자는 어디에 적합합니까? 당신은 어디에서나 방송하지 않습니다. 또한 최종 목표는 무엇입니까? 알람으로 활동을 시작 하시겠습니까? 나는 의도 된 실행의 흐름을 따르지 않을 것이다. –

답변

0

앱이 뒤로 버튼에서 닫혀있는 것으로 나타났습니다. 아래 코드로 뒤로 버튼 누름에서 앱 닫기를 중지하면 설정 한 알람에 필요한 기능이 올바르게 실행됩니다.

@Override 
    public void onBackPressed() { 
     System.out.println("BACK PRESS"); 
     moveTaskToBack(true); 
    } 
+0

최근 목록에서 앱을 지우면 알람이 울리나요? – Erum

관련 문제