其实是调用的 mService.requestPinAppWidget,mService 也是通过aidl 生成的 Proxy 代理类

找到实现类:class AppWidgetServiceImpl extends IAppWidgetService.Stub:

LocalServices 持有记录 Class 和 对应的对象的映射表:sLocalServiceObjects
getService 返回的即为 ShortcutService.LocalService extends ShortcutServiceInternal


最终调用的是 mShortcutRequestPinProcessor.requestPinItemLocked() 方法,创建PinItemRequest 和 PinAppWidgetRequestInner:


- PinItemRequest 其实依赖 mInner 对象,但构造器是私有的,无法自己创建,好在他实现了Parcelable,可以通过 CREATOR 来创建
- PinAppWidgetRequestInner 是继承 aidl 生成的 IPinItemRequest.Stub对象
-
AddItemActivity 中使用的 mRequest 其实就是 PinAppWidgetRequestInner 对应的 Proxy 对象。
image.png
image.png
网友评论