在Android中安排警报的数组

时间:2012-07-29 10:27:26

标签: android android-intent

我正在组建个人组织者。用户可以从日历中选择日期,然后可以按特定小时制作日期。在此日期和时间,应用程序应显示其他活动,即通知。用户每天只能做一个音符。所以每个音符的pk都是YYYYMMDD。

所以,我想知道我所做的是对还是不对。 我有一个从应用程序开始的服务。服务的onStartCommand检查在当前日期数据库中是否有注释,如果有,则调用活动通知。我有一个可运行的线程,它每分钟循环一次,它会更新服务的日期,因为onStartCommand的日期是静态的。如果runnable获取的日期等于onStartCommand的日期,则继续循环,否则我再次启动服务:

Intent myIntent = new Intent(Receiver.this, NotificaSuoneria.class);
startActivity(myIntent);

通过这种方式,我没有任何麻烦,但我想知道是否可以通过android杀死可运行的线程,因为如果被杀,我无法检查其他日子的警报。

而且,当我每次更新日期时重新​​启动服务时,旧的可运行线程将被终止或将会有很多线程?

P.S。 我没有使用AlarmManager来安排闹钟。如果日期与警报有一定的接触,我会计算剩余时间并暂时休眠,然后我将开始通知活动。抱歉我的英语很差。

1 个答案:

答案 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当开始广播接收者的活动