Search code examples
androidalarmmanager

Alarm Manager is not invoking Broadcast receiver


I have two issues of Alarm manager. One is i want to repeat alarm every 10 seconds and other is my Broadcast Receiver is invoking after 10 second.

When i use Activity instead of Broadcast Receiver it is working But Broadcast Receiver is not working. And time is not proper some time it works in 1 min and some times it works i 50 Seconds. But i need every 10 Second.

My code is:

 buttonStart.setOnClickListener(new Button.OnClickListener(){

 @Override

        public void onClick(View arg0) {

            // TODO Auto-generated method stub

            long tenMin = 1000/5  ;//here is 30 seconds
            Intent intent = new Intent(MainActivity.this, MyBroadcastReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this,
                    0, intent, 0);
            AlarmManager am =
                    (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
            am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), tenMin, pendingIntent);

        }});

BoradcastReceiver.java

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override  
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "Alarm....", Toast.LENGTH_LONG).show();
    }  
}  


Manifest file:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name=".MyAlarmService" />

        <receiver
            android:name=".MyBroadcastReceiver"
            android:process=":remote"></receiver>

        <activity android:name=".SecondActivity"></activity>
    </application>

</manifest>

Solution

  • Use:

    Activity:

    PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,0, intent, 0);
    

    10sec repeating interval,

       repeatingInterval = 10 *1000; //interval in milli seconds for 10sec
    
       AlarmManager alarmManager =(AlarmManager)getSystemService(Activity.ALARM_SERVICE);
       alarmManager .setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), repeatingInterval , pendingIntent);
    

    It should work.