我必须创建一个应用程序,我必须在其中设置日期,并且在特定日期9点钟,我必须发出通知。这样做最简单的方法是什么?即使应用程序被杀,我希望应用程序能够正常运行。 AlarmManager是解决方案吗?
答案 0 :(得分:15)
要安排操作,您可以使用AlarmManager
试试这段代码对我有用:
1 /声明BroadcastReceiver CLASS启动Action,这个类可以在你的活动里面或在其他java文件外面
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show();
}
}
2 /在您的Oncreate方法中放置此代码
AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Receiver receiver = new Receiver();
IntentFilter filter = new IntentFilter("ALARM_ACTION");
registerReceiver(receiver, filter);
Intent intent = new Intent("ALARM_ACTION");
intent.putExtra("param", "My scheduled action");
PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0);
// I choose 3s after the launch of my application
alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ;
启动你的应用程序3秒后会出现Toast,所以你可以用你的唤醒时间更改“System.currentTimeMillis()+ 3000”。
答案 1 :(得分:4)
您必须使用AlarmManager
设置RTC_WAKEUP
类型的闹钟。
来自docs:
当闹钟响起时,已注册的意图是 由系统广播,自动启动目标应用程序 如果它还没有运行注册的警报保留在 设备处于休眠状态(并且可以选择唤醒设备,如果它们熄灭 在此期间),但如果关闭则会被清除 重新启动强>
所以这意味着:
BroadcastListener
在设备重启后重新注册警报的事件。答案 2 :(得分:3)
您应该将应用程序创建为android service。
服务是一个可以执行长时间运行的应用程序组件 在后台运行并且不提供用户界面。 另一个应用程序组件可以启动服务,它将继续 即使用户切换到另一个用户,也要在后台运行 应用。此外,组件可以绑定到服务 与之交互甚至执行进程间通信(IPC)。 例如,服务可能处理网络事务,播放音乐, 从中执行文件I / O或与内容提供商进行交互 背景
答案 3 :(得分:1)
警报管理器是我猜的解决方案。您应该将警报管理器设置为特定时间,然后在其启动时调用通知。这应该在服务中实现。我希望它有所帮助。