关于ViewPager中子Activity生命周期 混乱的问题解决方案

简介: 关于ViewPager中子Activity生命周期 混乱的问题解决方案标签: viewpage 子activity 生命周期混乱做一个项目的时候,使用的viewpage+activity,刚开始没发现问题,后期发现子activity的onResume()方法一直不调用,从网上查了很多资料才找个解决方案。

关于ViewPager中子Activity生命周期 混乱的问题解决方案

标签: viewpage 子activity 生命周期混乱
做一个项目的时候,使用的viewpage+activity,刚开始没发现问题,后期发现子activity的onResume()方法一直不调用,从网上查了很多资料才找个解决方案。Google后得知大概是ViewPager中的子Activity"只是用了activity的各个窗口样子,没有将它们加入到AMS中管理"。故无法正确调用生命周期方法。从网上看的也有说通过广播来解决,但是我感觉不是很好,于是耗费了一天时间,在网上飞舞,当看到这位仁兄的见解,才让我茅塞顿开。解决办法是自定义方法来模拟Activity的onResume和onPause,然后在ViewPager所在的父Activity中手动调用子Activity中自定义的伪生命周期方法。

废话不说,上代码:

某子Activity中

  1. public void invisibleOnScreen(){  
  2.         log.d("invisibleOnScreen");  
  3.           
  4.     }  
  5.       
  6.     public void goneOnScreen(){  
  7.         log.d("goneOnScreen");  
  8.           
  9.     }  
invisibleOnScreen相当于onResume,goneOnScreen相当于onPause

父Activity中

  1. @Override  
  2.     protected void onResume() {  
  3.         super.onResume();  
  4.         log.d("onResume");  
  5.         mActivityManager.dispatchResume();  
  6.         if(mViewPager != null){  
  7.             switch (mViewPager.getCurrentItem()) {  
  8.             case 0:  
  9.                 Activity _activity = mActivityManager.getActivity(A);  
  10.                 if(_activity != null && _activity instanceof MyActivity){  
  11.                     ((MyActivity)_activity ).invisibleOnScreen();  
  12.                 }  
  13.                 break;  
  14.               
  15.             default:  
  16.                 break;  
  17.             }  
  18.         }  
  19.     }  
因为在给ViewPager设定Adapter时已经使用
  1. mActivityManager.startActivity(tag, intent).getDecorView()  
来给每个子Activity设置tag了,所以可以直接用
  1. mActivityManager.getActivity(A);  
来获取子Activity 接下来在父Activity的onPause和OnPageChangeListener中手动调用子Acticity的伪生命周期函数即可



http://blog.csdn.net/guxiao1201/article/details/8887320
相关文章
|
10月前
不用涉及到各种冲突常规打造酷炫下拉视差效果SmartRefreshLayout+ViewPager+RecyclerView
不用涉及到各种冲突常规打造酷炫下拉视差效果SmartRefreshLayout+ViewPager+RecyclerView
133 0
|
12月前
|
XML Java 数据格式
Fragement基础
静态创建Fragment(要先添加依赖),静态创建的意思是不用在Java代码中加载Fragment,都在Activity的主XML文件中操作绑定Fragment。
71 0
|
前端开发 容器
View的测量、布局和绘制过程中父View(当前View)和子View的先后顺序
View的测量、布局和绘制过程中,到底是先测量(布局、绘制)父View,还是先测量子View,这篇文章会从源码角度给出答案。
|
Android开发
View事件分发相关结论的源码解析
View事件分发的三个核心方法有三个,分别是`dispatchTouchEvent`方法,`onInterceptTouchEvent`方法和`onInterceptTouchEvent`方法。 dispatchTouchEvent方法主要用来进行事件的分发。如果事件能够传递给当前View,那么此方法一定会被调用,返回结果受当前View的onTouchEvent和下级View的dispatchTouchEvent方法的影响,表示是否消耗当前事件。 onInterceptTouchEvent方法在dispatchTouchEvent方法内部调用,用来判断是否拦截某个事件,返回结果表示是否拦截
|
Android开发
ViewPager源码分析(2):滑动及冲突处理
我的简书同步发布:ViewPager源码分析(2):滑动及冲突处理 转载请注明出处:【huachao1001的专栏:http://blog.csdn.net/huachao1001】 上一篇介绍了ViewPager的onMeasure和onLayout两个方法,这是自定义View最基本的两个函数。但是我们的ViewPager有个需求就是滑动,接下来我们一起去学习ViewPager在滑动方面做了哪些工作,以及ViewPager如何处理与子View之间的滑动冲突。由于ViewPager的子View有Decor View还有普通的子View,而本篇文章讲的主要是普通子View,因此,不再去刻意区
ViewPager源码分析(2):滑动及冲突处理
|
Android开发 容器
View工作原理分析1 - 初识ViewRoot和 DecorView
以下相关资料均来自 Android艺术探索,部分内容加入了一些我个人的理解。
108 0
|
Android开发
从源码角度分析Activity、Window和DecorView的关系
前言 最近想出一篇Android事件分发机制的文章,但是根据很多小伙伴反馈在理解Android事件分发机制之前都不是很明白Activity、Window和DecorView之间的关系,导致在学习Android事件分发机制上理解很费劲,本文将从源码角度带你分析Activity、Window和DecorView之间的关系,让你彻彻底底搞明白。
1392 0