11

我想每天早上 8:00 创建一个通知。我在 SQLite 数据库中有一些数据,此时我每天都想从中获取数据并从中创建通知。创建一个新的通知是没有问题的,但我怎么能在这个时候每天都显示呢?

我想我必须使用一项服务,但我如何告诉系统在特殊时刻启动这项服务?我应该使用什么样的服务?我认为如果系统调用该服务,它会启动一个特定的功能,我可以在其中运行我的代码以连接到数据库并创建我的通知并将其发送到系统,对吗?

我无法理解的是,如果我在主 Activity 中注册该服务,为什么如果用户关闭我的应用程序,系统可以启动该服务?谁能给我解释一下?我总是认为如果我的主要活动被破坏,服务也会被破坏。

4

2 回答 2

7

使用警报管理器类并将通知放在一个NotifyService类中。这将在每天早上 8 点设置闹钟:

Intent myIntent = new Intent(Current.this , NotifyService.class);     
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
pendingIntent = PendingIntent.getService(ThisApp.this, 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 08);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , pendingIntent);  //set repeating every 24 hours
于 2013-05-10T16:53:41.617 回答
2

您不需要服务器。我认为实现这一点的最佳方法是使用 AlarmManager。

警报管理器示例

于 2013-05-10T16:53:50.970 回答