我正在尝试设置一个警报管理器。这是我做的:
private static AlarmManager alarmManager;
private BroadcastReceiver alarmReceiver;
private PendingIntent alarmIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
alarmReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Hello", Toast.LENGTH_LONG).show();
WakeLocker.acquire(context);
}
};
registerReceiver(alarmReceiver, new IntentFilter("com.alarm.wakemeup") );
alarmIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.alarm.wakemeup"),0 );
alarmManager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
SetAlarm(getApplicationContext());
}
public void SetAlarm(Context context)
{
alarmManager.set( AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() +
5000, alarmIntent );
}
当我锁定屏幕时,此功能正常:手机唤醒并在5秒后在屏幕上显示烤面包。但是当我明确退出应用程序时,不会触发警报管理器。有什么建议吗?
由于
答案 0 :(得分:1)
使用static receiver。您正在将接收器注册到Activity,当您的应用未运行时,它将被破坏。那么那个接收器怎么能听到你的警报呢。
因此,将接收器注册到清单中。即使您的应用未运行,它也会收听警报。
答案 1 :(得分:1)
答案 2 :(得分:0)
这是针对下一阶段答案......
如果要在重新启动后处理服务,则需要使用WakefulIntent。在此示例代码和文档中将清除什么。
Github使用此存储库将解决您的所有问题。
我使用了这个git中的DEMO2。
Dhruti的回答是完美的。 我希望这也会有所帮助。