繁体   English   中英

即使时间错误也会执行AlarmManager

[英]AlarmManager executed even if the time is wrong

我正在使用以下代码在上午10:30执行警报,然后保持每8秒执行一次,但是问题是,即使时间不是10:30,该代码也会执行警报管理器。

我已经尝试了所有方法,但是无论设置了什么时间,代码都会继续执行警报,

public class MainActivity extends Activity {

    private PendingIntent pendingIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /* Retrieve a PendingIntent that will perform a broadcast */
        Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, 0);

        startAt10();
    }

    public void startAt10() {

        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        /* Set the alarm to start at 10:30 AM */
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 10);
        calendar.set(Calendar.MINUTE, 30);

        /* Repeating on every 8 seconds interval */
        manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                1000 * 8, pendingIntent);
    }

}

这是我的AlarmReceiver类,

public class AlarmReceiver extends BroadcastReceiver {

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

        // For our recurring task, we'll just display a message
        Toast.makeText(context, "Welcome Back ! ", Toast.LENGTH_SHORT).show();

    }

我也在我的AndroidManifest.xml添加了它,

<receiver android:name="com.example.test2.AlarmReceiver" android:enabled="true" >
    </receiver>

如何使其仅在上午10:30执行?

您的代码是正确的。 警报将从上午10:30开始,并每8秒重复一次。 但是一旦检查了运行应用程序的设备或仿真器中的时间。 如果时间已经过去,则警报立即开始执行。

如果时间未完成,则一旦卸载应用程序并再次运行,它可能会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM