【问题标题】:android intents alarmmanagerandroid意图警报管理器
【发布时间】:2010-08-07 20:12:38
【问题描述】:

我正在尝试创建将使用警报管理器设置的意图。目前,我可以用一个意图来执行此操作,向其中添加额外的数据(字符串,但我将它们作为一个带有分隔符的字符串发送),一切正常并在正确的时间关闭。但是,当我尝试像这样发送多个意图时,它们会被覆盖,并且只有一个在正确的时间发出。我如何构建我的意图,使它们看起来与警报管理器不同(我认为它们在运行 filterIntent() 时会被删除)。

长话短说-putExtra() 使所有意图看起来仍然相同......我怎样才能让它们看起来不同,这样它们就不会被删除(并跟踪它们以防我想删除特定的意图)

【问题讨论】:

    标签: android android-intent alarmmanager


    【解决方案1】:

    这就是我为我的小部件安排更新的方式。每个都可以是唯一的,因为它们具有唯一的小部件 ID 号。

    Intent widgetUpdate = new Intent();
    widgetUpdate.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
    widgetUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { appWidgetId });
    widgetUpdate.putExtra(EXTRA_POSITION,0);
    widgetUpdate.putExtra(EXTRA_URL, URL);
    // make this pending intent unique by adding a scheme to it
    widgetUpdate.setData(Uri.withAppendedPath(Uri.parse(URI_SCHEME + "://widget/id/"), String.valueOf(appWidgetId)));
    PendingIntent newPending = PendingIntent.getBroadcast(context, 0, widgetUpdate, PendingIntent.FLAG_UPDATE_CURRENT);
    // schedule the updating
    AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarms.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), updateRateSeconds * 1000, newPending);
    

    【讨论】:

    • 你如何检索数据?
    【解决方案2】:

    根据文档,AlarmManager 使用 filterEquals() 检查两个 Intents 是否等效。查看filterEquals() 的文档,了解它如何确定两个Intents 是否相等。另外,chris324的解决方案也不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多