我以这种方式做到了,对我来说效果很好。
创建一个类并将其称为ScheduledService它扩展了 IntentService,在这个类中,您将在警报响起时做您想做的事情。
public class ScheduledService extends IntentService {
public ScheduledService() {
super("My service");
}
@Override
protected void onHandleIntent(Intent intent) {
//Do something, fire a notification or whatever you want to do here
Log.d("debug", "Ring Rind !");
}
}
然后在您的活动中启动警报使用以下内容:
AlarmManager mgr = (AlarmManager) YourActivity.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(YourActivity, ScheduledService.class);
PendingIntent pi = PendingIntent.getService(YourActivity, 0, i, 0);
mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + PERIOD, pi);
哪个PERIOD是您希望警报响起的毫秒数。
要取消停止计时器并取消闹钟,请使用:
if (mgr != null)
mgr.cancel(pi);
最后,要使所有这些工作,您需要将ScheduledService类注册为服务。在你的清单中添加这个 tou 你的应用程序:
<application
... />
...
<service android:name=".ScheduledService" >
</service>
</application>
这样,Android 操作系统将负责在时间到时触发警报。即使其他应用程序正在运行,或者即使您的应用程序进程已终止。
希望这有帮助。问候。
只是一个疯狂的想法:创建一个活动并将其主题设置为全屏,没有标题栏和一个停止警报的按钮,而不是做一个通知,只是做一个启动该活动的意图“也许你需要这个”来工作即使手机被锁定并播放一些烦人的声音,当活动开始时,“ This ”也可能会有所帮助。你也可以重写onBackPressed()什么都不做。