2012-03-29 3 views
9

나는 날짜를 설정해야하는 앱을해야하며 그 특정 날짜에 9시에 알림을 보내야합니다. 가장 간단한 방법은 무엇입니까? (휴대 전화를 재부팅하거나 배터리를 꺼도 앱이 작동하기를 원합니다.) AlarmManager는 해결책입니까?특정 날짜의 Android 알림

+12

배터리없이 안드로이드가 어떻게 작동 할 것으로 기대합니까? :) – waqaslam

+0

내가 다시 그 애플 리케이션에 액세스하지 않고도 그 알림을 얻을 수 있다는 것을 의미 – user1253236

+0

그/그녀가 배터리를 꺼내 그것을 대체하면 OP는 분명히 의미. –

답변

15

당신이 나를 위해 일의이 코드를보십시오 알람 관리기

를 사용할 수있는 액션 예약하려면 다음 작업을 시작

1 /를 브로드 캐스트 리시버 클래스를 선언을,이 클래스의 활동 내에서 할 수 있습니다 또는 외부의 다른 자바 파일에 한 OnCreate 메소드 내부

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show(); 
    } 

} 

2 /이 코드를 넣어

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 

    Receiver receiver = new Receiver(); 
    IntentFilter filter = new IntentFilter("ALARM_ACTION"); 
    registerReceiver(receiver, filter); 

    Intent intent = new Intent("ALARM_ACTION"); 
    intent.putExtra("param", "My scheduled action"); 
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0); 
    // I choose 3s after the launch of my application 
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ; 

앱을 실행하면 3 초 후에 토스트가 표시되므로 깨우기 시간과 함께 "System.currentTimeMillis() + 3000"을 변경할 수 있습니다.

+0

완벽하게 작동합니다. 이것은 답변으로 받아 들여야합니다. – user1531978

3

android service으로 앱을 만들어야합니다.

서비스는 백그라운드에서 장기 실행 작업을 수행 할 수 있으며 사용자 인터페이스를 제공하지 않는 응용 프로그램 구성 요소입니다. 다른 응용 프로그램 구성 요소가 서비스를 시작할 수 있으며 사용자가 다른 응용 프로그램으로 전환하더라도 계속 백그라운드에서 실행되도록 이 계속됩니다. 또한 구성 요소는 과 상호 작용하고 심지어 프로세스 간 통신 (IPC)을 수행하는 서비스에 바인딩 할 수 있습니다. 예를 들어 서비스는 배경에서 네트워크 트랜잭션을 처리하고 음악을 재생하며 파일 I/O를 수행하거나 콘텐츠 공급자와 상호 작용할 수 있습니다.

1

알람 관리자는 내가 생각하는 해결책입니다. 알람 관리자를 특정 시간으로 설정 한 다음 알림을 온 스타트로 호출하도록해야합니다. 이는 서비스 내에서 구현되어야합니다. 나는 그것이 도움이되기를 바랍니다.

+0

아니요, 그렇지 않았지만 어쨌든 고마워요 – user1253236

4

AlarmManager을 사용하여 RTC_WAKEUP 유형의 알람을 설정해야합니다. docs에서

: 이미 실행되고 있지 않은 경우

알람이 꺼집니다, 그것은 시스템에 의해 방송 이다 등록했던 의도, 자동으로 대상 응용 프로그램을 을 시작. 장치가 잠 (그리고 그들은 그 시간 동안 을 가면 을 장치를 깨워 선택적으로 수), 하지만이 꺼져 있고 이를 재부팅하면 삭제됩니다 동안 등록 된 알람이 유지됩니다.

  • 당신은이를 달성하기 위해 지속적으로 실행되는 서비스가 필요하지 않습니다 :

그래서이 있다는 것을 의미한다.

  • 장치를 재부팅 한 후 BOOT_COMPLETE 이벤트를 수신하여 알람을 다시 등록해야하는 경우가 있습니다 (BroadcastListener).