Android之RemoteViews的理解
RemoteViews的应用
相信大家对于RemoteView并不陌生,当我们做notification或者widget开发的时候经常会用上.
关于这两者的开发具体过程就不详细叙述了,在书中和网上都有很详细的叙述.
PendingIntent是什么
在我们开发notification或者widget的过程中,还会经常使用一个类,PendingIntent,那么,这个类是做什么的呢
通过对其的使用,我们可以知道,这个类主要是为了给我们的notification或者widget设置Intent,不同于普通intent,类似于一个预设的事件,例如,设置点击之后的intent
RemoteViews的原理
在开发过程中,我们会发现,RemoteViews支持的view的类型是有限的,如果使用了不支持的类型,就会报错,而且当我们设置这些view的属性的时候也不能用findviewbyid的常规手段
这是为什么呢,作者在书中通过对remoteViews的原理分析来解答了这个问题.
其实,remoteview是在其他进程中更新显示view, 既然是其他进程,那么肯定就会涉及到ipc的问题.
每次修改发生的时候,都要进行ipc,这样显得很low也很没有效率,谷歌设计了一套特殊的机制--Actions
这套机制,首先只支持一部分view,防止了支持太多view而导致的效率问题
另外,这个机制对于每次修改都当作一个集合的元素,当调用remoteview的apply方法的时候,就会一口气发送过去,提高了效率,而通过binder的ipc,发送给了SystemService来进行显示.
总结
通过本章的学习,作者向我们阐述了我们常用的remoteviews的内部原理,让我们在做notification和widge开发的时候更加得心应手,之前看似复杂的东西在代码和讲解的双重学习之下也就显得不那么困难了.