根据应用程序快捷方式的文档
速率限制 使用 setDynamicShortcuts()、addDynamicShortcuts() 或 updateShortcuts() 方法,请记住,您可能只能 在后台应用中调用这些方法的特定次数,一个 当前前台没有活动或服务的应用。在一个 生产环境,您可以通过引入来重置此速率限制 你的应用置于前台。
应用程序快捷方式的速率限制是什么? 何时应该使用 isRateLimitingActive()?
-
查看源代码,如果您没有剩余对
ShortcutManager
API的调用(因此为"0"),则isRateLimitingActive()
方法似乎返回false。我想需要速率限制,因为 API 是资源密集型的。我可以想象,如果您更新快捷方式,至少会发生以下情况:- 启动器应用程序(和其他侦听器)需要收到通知并开始更新其 UI 或任何需要的内容(取决于启动器);
- 系统需要存储新的动态快捷信息;
-
您可以使用此方法来确定对
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();
}
}
奖励:如果由于速率限制而未成功,则
setDynamicShortcuts()
、addDynamicShortcuts()
或updateShortcuts()
返回 false。
建议的最大快捷方式数为 4,但最多可以发布 5 个。您可以在此处阅读更多内容。