After so many debug, I observed the following: In CachingActivityMapper->getActivity(), the equals method returns false all the time.
So I tried to override the equals method in my place classes. But, since the equals method seems invoked in some of the other places it doesnot work.
Finally I created my own CachingActivtyManager, in which the getActivity() method calls my own isEqual() method. It worked as expected.
Thanks.