android 应用程序快捷方式的速率限制是什么?

What is rate limiting for android app shortcuts?

根据应用程序快捷方式的文档

Rate Limiting When using the setDynamicShortcuts(), addDynamicShortcuts(), or updateShortcuts() methods, keep in mind that you might only be able to call these methods a specific number of times in a background app, an app with no activities or services currently in the foreground. In a production environment, you can reset this rate limiting by bringing your app to the foreground.

什么是应用快捷方式的速率限制?什么时候应该使用 isRateLimitingActive()

  1. 查看源代码似乎 isRateLimitingActive() 方法 returns false 如果你没有任何剩余的调用留给 ShortcutManager API (因此是“0”)。我想需要限制速率,因为 API 是资源密集型的。我可以想象,如果您更新快捷方式,至少会发生以下情况:

    • 需要通知启动器应用程序(和其他侦听器)并开始更新它 UI 或任何需要的东西(取决于启动器);
    • 系统需要store新的动态快捷方式信息;
  2. 您可以使用此方法确定对 setDynamicShortcuts()addDynamicShortcuts()updateShortcuts() 的调用是否会成功,甚至在尝试这样做之前。

Source:

/**
 * Return {@code true} when rate-limiting is active for the caller application.
 *
 * <p>See the class level javadoc for details.
 *
 * @throws IllegalStateException when the user is locked.
 */
public boolean isRateLimitingActive() {
    try {
        return mService.getRemainingCallCount(mContext.getPackageName(), injectMyUserId())
                == 0;
    } catch (RemoteException e) {
        throw e.rethrowFromSystemServer();
    }
}

Bonus: setDynamicShortcuts(), addDynamicShortcuts() or updateShortcuts() return false if they did not succeed due to Rate Limiting.

虽然最多可以发布 5 个,但建议的最大快捷方式数量为 4 个。您可以阅读更多内容 here