根据应用程序快捷方式的文档
速率限制 使用 setDynamicShortcuts()、addDynamicShortcuts() 或 updateShortcuts() 方法时,请记住,您可能只能在后台应用程序(当前没有活动或服务的应用程序)中调用这些方法特定次数在前台。在生产环境中,您可以通过将应用程序置于前台来重置此速率限制。
与应用快捷方式有关的速率限制是什么?什么时候应该使用isRateLimitingActive() ?
根据应用程序快捷方式的文档
速率限制 使用 setDynamicShortcuts()、addDynamicShortcuts() 或 updateShortcuts() 方法时,请记住,您可能只能在后台应用程序(当前没有活动或服务的应用程序)中调用这些方法特定次数在前台。在生产环境中,您可以通过将应用程序置于前台来重置此速率限制。
与应用快捷方式有关的速率限制是什么?什么时候应该使用isRateLimitingActive() ?
查看源代码,isRateLimitingActive()
如果您没有对ShortcutManager
API的任何剩余调用(因此为“0”) ,该方法似乎返回 false 。我猜想限制速率是必要的,因为 API 是资源密集型的。我可以想象,如果您更新快捷方式,至少会发生以下情况:
您可以使用此方法来确定调用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()
,如果由于速率限制而没有成功,则返回 falseaddDynamicShortcuts()
。updateShortcuts()
建议的最大快捷方式数量为 4,尽管最多可以发布 5 个。您可以在此处阅读更多信息。