`

ActivityGroup对子Activity的管理

阅读更多
转自http://eyeandroid.diandian.com/post/2012-07-05/40030542380

ActivityGroup对子Activity的管理
ActivityGroup是个用来承载多个Activity的容器,自身也是继承Activity,主要用于切换Activity(Layout),类似新浪微博软件切换界面。
public class MainActivityGroup extends ActivityGroup {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main_layout);
}
}
用法与Activity类似,生命周期也一样。onCreate->onStart->onResume->onPause->onStop->onDestroy
布局文件的weight属性这里第一次派上了用途,我的布局类似新浪微博的界面,上边是一个刷新按钮跟文字,下面是一排ImageView来点击切换Activity,中间是Activity的布局。上下的高度定义好以后,我要让activity充满剩余空间,就用了weight=1这个属性。其他用法暂时没用到。
点击开始用ActivityGroup来启动子Activity:
1,activity_container(这是Group布局里面的用来装Activity的Layout)要移除所有的view
activity_container.removeAllViews();
2,增加view到里面
activity_container.addView(
this.getLocalActivityManager().startActivty(str_id,intent).getDecorView());
其中的ActivityManager是ActivityGroup私有的一个成员,用来管理子Activity,这里用来启动。参数是id,和一个intent对象。根据id用key-value的方式,把intent放入到自己的Map里面,用于自己的管理。
(1)当StartActivity时,如果key是不存在的,那么启动一个新的Activity,然后把key与intent放到自己的map
(2)当key是存在的。那么当前的Activity 与新的Activity要怎么切换变化?
这就跟Intent的Flag相关了。第一,如果当前的Activity的intent.Flag设置的是多模式或者FLAG_ACTIVITY_SINGLE_TOP,那么子Activity就会被切换到后台,调用Intent传来的Activity,这个新的Activity也会根据自身的Flag,而出现不同的生命周期变化。
举个例子,如果每个子Activity都是这样的方式启动的
getLocalActivityManager().
startActivity(CampusConstants.ID_ACTIVITY[id], new Intent(MainActivityGroup.this,activity).
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)).getDecorView());
那么切换时,Activity就不用每一次都Oncreate重新建立
如果使用的是
FLAG_ACTIVITY_CLEAR_TOP 那么每一次切换都会重新onCreate一遍。
分享到:
评论

相关推荐

    使用ActivityGroup管理Activity

    然而,有时开发者可能需要在同一个栈中管理多个Activity,这时`ActivityGroup`就派上了用场。`ActivityGroup`是早期Android版本(Android 2.x)提供的一种特殊类型的`ViewGroup`,允许在同一个`TabHost`或`...

    ActivityGroup之Activity内跳转和外跳转

    这个过程通常需要重写`startChildActivity()`方法,以便在ActivityGroup内部管理子Activity的生命周期。例如: ```java public void startChildActivity(String tag, Intent intent) { Window window = ...

    ActivityGroup之activity内跳转和外跳转

    这通常通过自定义的启动方法实现,如`startChildActivity()`,在该方法中,你需要管理Activity的生命周期,并将新Activity的视图添加到ActivityGroup的布局中。 Activity外跳转则是指从ActivityGroup中的子Activity...

    使用ActivityGroup来切换Activity和Layout

    `ActivityGroup`是`Sherlock`库中的一个类,它扩展了`Activity`,并提供了管理子`Activity`的能力。通过`LocalActivityManager`,我们可以启动、切换和管理子`Activity`,同时保持它们的状态。 在实现过程中,我们...

    Android开发—使用ActivityGroup来切换Activity和Layout

    为了实现这个功能,我们可以使用 ActivityGroup 来管理不同的 Activity。 首先,让我们来了解一下 ActivityGroup 的概念。ActivityGroup 是 Android 中的一种特殊的 Activity,它可以容纳多个 Activity,并且可以在...

    Android开发—使用ActivityGroup来切换Activity和Layout.pdf

    在Android开发中,ActivityGroup是一种特殊类型的Activity,它允许开发者在一个Activity内嵌套其他Activity,实现类似TabHost或Fragment的效果,但这是在Android早期版本(API级别较低)中的一种实现方式。...

    用ActivityGroup解决TabHost中多个Activity跳转问题

    这样,在TabHost中,我们可以创建一个包含多个子Activity的ActivityGroup,而不是创建多个独立的Activity,从而简化了回退栈的管理和内存管理。 具体实现ActivityGroup的方法包括: 1. **定义ActivityGroup**:...

    ActivityGroup和ViewPager组合实现微信模仿

    在早期的Android SDK版本中,ActivityGroup是一个可以嵌套多个Activity的容器,它允许开发者在一个Activity内启动另一个Activity,从而实现类似TabHost的效果。然而,由于它存在一些局限性和问题,如内存泄漏和生命...

    activitygroup

    `ActivityGroup`在早期的Android版本中被用来解决在同一个栈内管理多个`Activity`的需求,但在Android 3.0(API Level 11)之后,官方推荐使用`Fragment`来替代,因为`Fragment`提供了更灵活且性能更好的解决方案。...

    ActivityGroup实现Activit栈

    在Android开发中,ActivityGroup是早些版本API中提供的一种特殊类型的Activity,它允许开发者在一个TabHost或者帧布局(FrameLayout)中嵌套多个Activity,从而实现类似iOS中UINavigationController的堆叠管理器效果...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.7z

    4. 子Activity的生命周期管理:由于ActivityGroup内嵌了Activity,所以必须手动处理子Activity的生命周期。例如,当用户在选项卡之间切换时,需要调用finish()方法结束当前子Activity,并启动新的子Activity。 5. ...

    安卓Android源码——TabHost内嵌ActivityGroup界面管理源码.zip

    ActivityGroup是另一种用于管理多个Activity的容器类,它允许你在同一个父Activity中启动和管理子Activity。这在某些情况下非常有用,例如在一个应用中创建类似TabHost的多页面导航,但又希望避免每次切换标签时都...

    android ActivityGroup的demo

    1. **LocalActivityManager**:这是ActivityGroup的核心组件,用于管理子Activity的创建、销毁以及保存和恢复状态。通过LocalActivityManager,我们可以方便地在ActivityGroup内启动新的子Activity,并在需要时切换...

    统一管理Activity,每个Activity又相对独立

    ActivityGroup是Android早期版本(API Level 13之前)提供的一种方式,用来在TabHost或者StackView等组件中嵌套管理Activity。它允许你在同一个窗口内启动和切换多个子Activity,使得这些子Activity看起来像是在一...

    AndroidTabHost内嵌ActivityGroup界面管理源码.zip

    4. 创建ActivityGroup:为每个Tab创建一个ActivityGroup,通常在onCreate()方法中,会设置一个LocalActivityManager来管理子Activity。 5. 添加子Activity:在ActivityGroup中,通过LocalActivityManager的start...

    ActivityGroup应用实例

    5. **生命周期管理**:ActivityGroup内的子Activity生命周期需要特别注意,因为它们的创建和销毁由LocalActivityManager控制,开发者需要确保正确处理每个子Activity的生命周期回调。 6. **异常处理和回退栈管理**...

    tabhost和ActivityGroup的组合使用

    在早期的Android版本中,ActivityGroup用于在一个Tab内管理多个Activity的堆栈。它的主要作用是在不离开TabHost的情况下,实现内部Activity的切换和堆栈管理。然而,从Android 3.0(API级别11)开始,ActivityGroup...

    Android代码-TabHost内嵌ActivityGroup界面管理源码.zip

    ActivityGroup则是在早期版本的Android系统中用来管理多个Activity在同一个父Activity内部进行切换的技术,它允许在一个View里展示多个Activity,从而实现类似Tab的效果。 **TabHost详解:** TabHost是Android SDK...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip

    ActivityGroup则是Android早期版本中用于在同一个Activity内管理多个子Activity的一种方式。它通过LocalActivityManager来实现子Activity的生命周期管理和界面切换。ActivityGroup的主要优势在于可以减少界面间的...

    Android Gallery+ActivityGroup实现滑动TAB独立Activity

    2. 创建ActivityGroup:定义一个继承自ActivityGroup的类,用于管理子Activity。你需要重写onCreateView方法来返回子Activity的视图,以及onSaveInstanceState和onRestoreInstanceState来保存和恢复子Activity的状态...

Global site tag (gtag.js) - Google Analytics