《Android开发艺术探索》第五章----理解RemoteView

Anroid开发艺术探索

第五章理解RemoteViews

  1. RemoteView主要应用与哪方面?通知栏和桌面小部件,两种的大致实现过程
  2. 自定义通知的实现方法?
  3. RemoteView和普通VIew有什么不同?实现原理是什么?--------引出反射
  4. PendingIntent是什么?它和Intent的区别?典型使用场景是什么?支持几种待定意图?(①②③)
  5. PendingIntent的匹配规则是什么?
  6. RemoteView常用的构造方法,参数是什么?
  7. RemoteView大部分set方法是同通过反射来完成的-----反射
  8. 重点描述remoteview跨进程传输的过程?
  9. 为什么remoteview不支持所有的view操作?
  10. remoteview是如何优化大量IPC问题的?(action概念)-----引出IPC通信
  11. 远程进程如何更新VIew?
  12. remoteview中有addAction的方法
  13. Action对象的apply方法就是真正操作View的地方
  14. apply和reapply的区别?
  15. Remoteview中只支持发起PendingIntent,不支持onClickListener监听器模式
  16. 一个应用需要能够更新另一个应用中的某个界面,可以用AIDL实现,但如果更新操作比较频繁,可以使用RemoteVIew进行优化(更具体的实例?)-----!性能优化

个人理解:

  1. 对AppWidgetProvider实现桌面小部件整个过程的理解:
    (1)首先我们在AndroidManifest.xml配置AppWidgetProvider(实际上是BroadcastReceive),必须能够接收“android.appwidget.action.APPWIDGET_UPDATE”这条广播,为什么?猜测:SystemServer进程会对每一个apk应用配置文件进行检查,如果发现可以接收这条广播,就会为应用初始化桌面部件(缩略图等等,进一步的话依据应用的appwidget Info配置文件进行设置)这时候可以进行基本的部件添加,删除操作。
    (2)然后是应用自定义的view如何显示在SystemServer中?借用remoteview,他并不是view的子类,而是一个实现了parcalable的类,内部封装了一些方法,面向SystemServer进程获得应用的动作(比如setViewText( ),应用进程传入viewId,方法名,参数,SystemServer进程根据这些信息通过remoteview进行设置【这里设置方法有两种,一种是在SystemServer进程findviewbyid,然后set,一种是通过反射获取。原因??】)。如果要给view设置点击事件,需要pendingIntent,因为这个intent并不是立即触发的(也就是并不是在应用进程中马上触发,而是传递给SystemServer进程,在SystemServer进程的点击事件中触发)
    (3)remoteview是通过Binder传输的,这样就实现了进程之间的交互

你可能感兴趣的:(《Android开发艺术探索》第五章----理解RemoteView)