我正在组建个人组织者。用户可以从日历中选择日期,然后可以按特定小时制作日期。在此日期和时间,应用程序应显示其他活动,即通知。用户每天只能做一个音符。所以每个音符的pk都是YYYYMMDD。
所以,我想知道我所做的是对还是不对。
我有一个从应用程序开始的服务。服务的onStartCommand
检查在当前日期数据库中是否有注释,如果有,则调用活动通知。我有一个可运行的线程,它每分钟循环一次,它会更新服务的日期,因为onStartCommand
的日期是静态的。如果runnable获取的日期等于onStartCommand
的日期,则继续循环,否则我再次启动服务:
Intent myIntent = new Intent(Receiver.this, NotificaSuoneria.class);
startActivity(myIntent);
通过这种方式,我没有任何麻烦,但我想知道是否可以通过android杀死可运行的线程,因为如果被杀,我无法检查其他日子的警报。
而且,当我每次更新日期时重新启动服务时,旧的可运行线程将被终止或将会有很多线程?
P.S。
我没有使用AlarmManager
来安排闹钟。如果日期与警报有一定的接触,我会计算剩余时间并暂时休眠,然后我将开始通知活动。抱歉我的英语很差。
答案 0 :(得分:0)
您应该使用AlarmManager进行循环,例如关注edited
try {
cntxt = createPackageContext("your.app.package",CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
// handle exception here
e.printStackTrace();
}
Intent myIntent = new Intent(cntxt , yourreciever.class);
PendingIntent pi;
AlarmManager alarmManager;
for(int i=0;i<=timesinday;i++)
{
pi=PendingIntent.getBroadcast(cntxt, i,myIntent, 0);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, currentcal.getTimeInMillis(),pi);
}
不要忘记在Android Menifest中添加NotificaSuoneria作为接收者。如果你想让警报每天都停止,你应该使用
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,todaycal.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
@Meesta我正在编辑你不必在这里提及活动的答案Intent myIntent = new Intent(Receiver.this, here.class);
这里将是你可以开始你的活动的接收者课程也看到http://androidword.blogspot.in/2010/10/how-to-use-broadcast-receiver.html并尝试添加flag_new_activity当开始广播接收者的活动