转自:http://blog.csdn.net/desiringm/article/details/7607338
大家都知道,android系统的资源ID的分配是在编译完成之后就确定了的,而资源的搜索是根据包进行搜索的,这就说明不同包下的资源ID是有可能相同的。那么,小插件View的ID就有可能与小插件的宿主(一般是Launcher)中的某个View的ID相同。如果真是这样,那么错误就有可能发生了。
Activity中有两个对称的函数onSaveInstanceState和onRestoreInstanceState,这两个函数的主要作用是在Activity被无故Kill掉的时候保存Activity所处Window下的所有View的状态和Activity被重新启动后,利用已经保存的状态,还原所有View。我们来看看源码:
首先看看Activity中的onSaveInstanceState过程。
1、Activity的onSaveInstanceState函数
2、PhoneWindow的saveHierarchyState函数
3、ViewGroup的saveHierarchyState函数(由于ViewGroup继承自View,但是没有实现View中的saveHierarchyState函数,所以ViewGroup中的saveHierarchyState函数体是View中saveHierarchyState函数体)
5、View中的dispatchSaveInstaceState函数
6、View中的onSaveInstanceState函数