1

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

速率限制 使用 setDynamicShortcuts()、addDynamicShortcuts() 或 updateShortcuts() 方法时,请记住,您可能只能在后台应用程序(当前没有活动或服务的应用程序)中调用这些方法特定次数在前台。在生产环境中,您可以通过将应用程序置于前台来重置此速率限制。

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

4

2 回答 2

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

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

来源

/**
 * 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(),如果由于速率限制而没有成功,则返回 false addDynamicShortcuts()updateShortcuts()

于 2017-01-03T11:53:32.037 回答
-1

建议的最大快捷方式数量为 4,尽管最多可以发布 5 个。您可以在此处阅读更多信息。

于 2017-03-18T06:16:00.960 回答