AppWidgetManager requestPinAppWi

2024-03-21  本文已影响0人  JungleTian

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

[https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/com/android/internal/appwidget/IAppWidgetService.aidl]

image.png
找到实现类:class AppWidgetServiceImpl extends IAppWidgetService.Stub:
image.png
LocalServices 持有记录 Class 和 对应的对象的映射表:sLocalServiceObjects
getService 返回的即为 ShortcutService.LocalService extends ShortcutServiceInternal
image.png
image.png
最终调用的是 mShortcutRequestPinProcessor.requestPinItemLocked() 方法,创建PinItemRequest 和 PinAppWidgetRequestInner:
image.png
image.png
  1. PinItemRequest 其实依赖 mInner 对象,但构造器是私有的,无法自己创建,好在他实现了Parcelable,可以通过 CREATOR 来创建
  2. PinAppWidgetRequestInner 是继承 aidl 生成的 IPinItemRequest.Stub对象
  3. AddItemActivity 中使用的 mRequest 其实就是 PinAppWidgetRequestInner 对应的 Proxy 对象。


    image.png
    image.png
上一篇 下一篇

猜你喜欢

热点阅读