影评《心灵奇旅》
“一条小鱼告诉大鱼:我想要去大海大鱼说:这里就是大海小鱼说:这里只是水,我要去的是大海。”
“一条小鱼告诉大鱼:我想要去大海大鱼说:这里就是大海小鱼说:这里只是水,我要去的是大海。”
最近维护项目的时候,遇到这个异常: Rxjava2后,当给onNext(T t)方法传递一个null对象的时候,会报异常”onNext called with null. Null values are generally not allowed in 2.x operators and sources”
周末听完了郭德纲的评书《卿卿误我,我误卿卿》,人世间的悲欢离合,让人感叹不已。
Viewpager+FragmentPagerAdapter/FragmentStatePagerAdapter实现滚动视图,在App中是很常见的设计,有时候在Fragment页面较多的情况下,需要在页面可见的情况,才对当前Fragment进行加载,也就是常说的懒加载。 这里直接谈谈现在如今的方案: FragmentPagerAdapter构造函数增加了behavior参数,假如设置为BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT参数,那么,当Viewpager滑动的时候,只有当前正在显示的Fragment会回调onResume()方法。即可以直接在onResume()函数中进行数据加载和其他初始化的操作,很方便。 它是怎么做到的呢? 在AndroidX下,源码上针对FragmentTransaction做了部分修改,增加了setMaxLifecycle函数,该函数可以设置Fragent的生命周期的状态。 ViewPager在滚动的时候,调用setPrimaryItem方法: ```java @Override public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) { Fragment fragment = (Fragment)object; if (fragment != mCurrentPrimaryItem) { if (mCurrentPrimaryItem != null) { mCurrentPrimaryItem.setMenuVisibility(false); if (mBehavior == BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } mCurTransaction.setMaxLifecycle(mCurrentPrimaryItem, Lifecycle.State.STARTED); } else { mCurrentPrimaryItem.setUserVisibleHint(false); } } fragment.setMenuVisibility(true); if (mBehavior == BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } mCurTransaction.setMaxLifecycle(fragment, Lifecycle.State.RESUMED); } else { fragment.setUserVisibleHint(true); }
不定期更新..