Button button;
Calendar currentTime = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
//获取AlarmManager对象
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//创建一个TimePickerDialog实例,并显示
new TimePickerDialog(MainActivity.this, 0,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
//指定启动AlarmActivity组件
Intent intent = new Intent(MainActivity.this, AlarmActivity2.class);
//创建PendingIntent对象
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR, hourOfDay);
c.set(Calendar.MINUTE, minute);
AlarmManager alarmManager=(AlarmManager) getSystemService(Service.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
//alarmManager.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), pi);
Toast.makeText(MainActivity.this, "设置闹钟成功", Toast.LENGTH_SHORT).show();
}
}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE), false).show();
}
});}}
这个是网上的一段闹钟程序,首先说明语法没什么错,另一个AlarmActivity类也没什么问题,因为试过用System.currentTimeMillis(),立即会闹的。然后早上调试的时候还能闹,晚上就没动静了……这是发生了什么?
android闹钟实现,不响……
答案:2 悬赏:50
解决时间 2021-04-09 13:42
- 提问者网友:爱你等于作孽
- 2021-04-08 23:28
最佳答案
- 二级知识专家网友:野性且迷人
- 2021-04-09 00:16
AlarmManager 的运行需要程序活着,比如在前台或者后台活着,你退出程序后还会有一个空进程在运行,时间到了就会响。
但是!但是!如果你在设置中“停止运行”了这个程序,或者使用360清理一类的清理内存的软件,或者某些软件有自动清理内存功能,或者有拦截自启动功能,或者内存低了,等等等等原因,导致你的程序没办法处于活动状态,那么AlarmManager就算到时间了也不会运行……
好的解决方法是在你的程序中写个广播接收器,接受多个广播,比如接受开机启动,网络发生变化,时区时间变化,等等广播,然后接受广播后拉起后台服务,这样你就能尽可能保证程序处于活动状态,并且要在360等权限管理软件中允许自启动。
望采纳
但是!但是!如果你在设置中“停止运行”了这个程序,或者使用360清理一类的清理内存的软件,或者某些软件有自动清理内存功能,或者有拦截自启动功能,或者内存低了,等等等等原因,导致你的程序没办法处于活动状态,那么AlarmManager就算到时间了也不会运行……
好的解决方法是在你的程序中写个广播接收器,接受多个广播,比如接受开机启动,网络发生变化,时区时间变化,等等广播,然后接受广播后拉起后台服务,这样你就能尽可能保证程序处于活动状态,并且要在360等权限管理软件中允许自启动。
望采纳
全部回答
- 1楼网友:安稳不如野
- 2021-04-09 01:42
android中有一个alarmmanager,顾名思义吧,基本上就是一些定时任务。
工作原理就是向系统注册一个定时任务,当时间到的时候系统会自动帮你启动你要执行的任务,比如闹钟。基本上就是这样,详细的请百度一下,勤劳的双手会助你在学习的道路上越走越远。
希望能够帮到你!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯