2012-01-07 6 views
1

이것은 내 코드입니다. 제대로 작동하지만 시간이 지나면 (약 1 시간) 작동하지 않습니다. 뭐가 문제 야? 미리 감사드립니다.알람 관리자가 잠시 후 작동하지 않습니다.

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 

public class Alarm extends BroadcastReceiver 
{  
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Toast.makeText(context, "Alarm !!!!!!!!!!!!!", Toast.LENGTH_LONG).show(); 
    } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, Alarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime(), 1000 * 60 * 10, pi); 
    } 

    public void StopAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
} 

답변

1

이것은 작동 코드입니다. 10 분마다 CPU를 깨우고 알림을 표시합니다.

Manifest.xml에 추가

... 
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 
... 
<receiver android:process=":remote" android:name="Alarm"></receiver> 
... 

코드 :

public class Alarm extends BroadcastReceiver 
{  
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG"); 
     wl.acquire(); 

     // Put here YOUR code. 
     Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example 

     wl.release(); 
    } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, Alarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute 
    } 

    public void CancelAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
} 
+0

앱이 예기치 않게 쇼핑됩니다. – Maha

1

세부 정보에 대한 블로그를 참조 예를Scheduling Task Using Alarm Manager in Android

public void scheduleAlarm(View V) 
{ 
    // time at which alarm will be scheduled here alarm is scheduled at 1 day from current time, 
    // we fetch the current time in milliseconds and added 1 day time 
    // i.e. 24*60*60*1000= 86,400,000 milliseconds in a day  
    Long time = new GregorianCalendar().getTimeInMillis()+24*60*60*1000; 

    // create an Intent and set the class which will execute when Alarm triggers, here we have 
    // given AlarmReciever in the Intent, the onRecieve() method of this class will execute when 

    Intent intentAlarm = new Intent(this, AlarmReciever.class); 

    //Get the Alarm Service 
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    //set the alarm for particular time 
    alarmManager.set(AlarmManager.RTC_WAKEUP,time, PendingIntent.getBroadcast(this,1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT)); 
    Toast.makeText(this, "Alarm Scheduled for Tommrrow", Toast.LENGTH_LONG).show(); 

}_ 

AlarmReciever 클래스

public class AlarmReciever extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // TODO Auto-generated method stub         
     // Your Code  When Alarm willl trigger        
    }  
} 
관련 문제