chester4321
chester4321

Reputation: 3

Alarm Manager not starting after 60 seconds

I'm trying to set my alarm manager working, just simple schedule, firing toast every minute, but it's not working, what's wrong with the code?

Main Activity :

public void klik(View view) {
    startalarm();
}


public void startalarm(){
    AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent;
    PendingIntent pendingIntent;
    intent = new Intent(this, AlarmToastReciever.class);
    pendingIntent = PendingIntent.getBroadcast(this,0,intent,0);
    manager.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime()+3000,+60000,pendingIntent);
}

}

AlarmToastReciever class :

 public class AlarmToastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
    Toast.makeText(context,"GOWNO", Toast.LENGTH_SHORT).show();
}
}

Upvotes: 0

Views: 119

Answers (2)

Eren Tüfekçi
Eren Tüfekçi

Reputation: 2511

As stated in documentation

As of Android 4.4 (API Level 19), all repeating alarms are inexact. Note that while setInexactRepeating() is an improvement over setRepeating(), it can still overwhelm a server if every instance of an app hits the server around the same time. Therefore, for network requests, add some randomness to your alarms, as discussed above.

You can use "setInexactRepeating()" or set an exact one time alarm then set next alarm in On Receive method

Also make sure you added your receiver to the manifest file, between application tag, like

 <receiver android:name=".AlarmToastReciever"
            android:enabled="true">
            <intent-filter>

                </intent-filter>
            </receiver>

Upvotes: 1

Ajit singh
Ajit singh

Reputation: 31

Use this code to initialize alarm manager.

 public void setupAlarm() {
    final Calendar calNow = Calendar.getInstance();
    final Calendar calSet = (Calendar) calNow.clone();

    calSet.set(Calendar.HOUR_OF_DAY, calNow.get(Calendar.HOUR_OF_DAY));
    calSet.set(Calendar.MINUTE, calNow.get(Calendar.MINUTE) + 1);
    calSet.set(Calendar.SECOND, calNow.get(Calendar.SECOND));

    final Intent intent = new Intent(this, UploadStarterReceiver.class);
    final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1,
            intent, 0);
    final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),
            60 * 1000, pendingIntent);
}

Upvotes: 0

Related Questions