ActivityGroup简介
1.ActivityGroup 的核心就是继承了该类,能够通过getLocalActivityManager()得到一个 LocalActivityManager
如 ,LocalActivityManager am= getLocalActivityManager();
2. 然后通过 LocalActivityManager 通过 startActivity(String id, Intent intent), 可以与指定的 Actiivty 绑定,并且返回一个 Window 。 LocalActivityManager 可以同时管理多个 Activity
Window window1 = am.startActivity("Module1", newIntent(TestView.this, ModuleView1.class));
Window window2 = am.startActivity("Module2", newIntent(TestView.this, ModuleView2.class));
3. 然后 Window 可以通过 getDecorView() 方法,返回一个 View, 然后通过与指定容器的 addView(View) 方法 , 实现不同的效果
View view1 = window1.getDecorView()
View view2 = window2.getDecorView()
实际中多用简写形式,如,
container 是 ScrollView 的一个实例
container.removeAllViews(); // 移除其他所有子视图
container.addView(getLocalActivityManager().startActivity(
"Module2",
new Intent(TestView.this, ModuleView2.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) )
.getDecorView());
注意 :
container.removeAllViews(): 表示在显示该视图之前,先移除其他所有视图 .
Intent.FLAG_ACTIVITY_CLEAR_TOP: 如果在当前 Task 中,有要启动的 Activity ,那么把该 Acitivity 之前的所有 Activity 都关掉,并把此 Activity 置前以避免创建 Activity 的实例
这种方式具有很大的灵活性,常用的就是实现TabHost分页效果,但很好的避免的TabHost的缺点,如title等
1.ActivityGroup 的核心就是继承了该类,能够通过getLocalActivityManager()得到一个 LocalActivityManager
如 ,LocalActivityManager am= getLocalActivityManager();
2. 然后通过 LocalActivityManager 通过 startActivity(String id, Intent intent), 可以与指定的 Actiivty 绑定,并且返回一个 Window 。 LocalActivityManager 可以同时管理多个 Activity
Window window1 = am.startActivity("Module1", newIntent(TestView.this, ModuleView1.class));
Window window2 = am.startActivity("Module2", newIntent(TestView.this, ModuleView2.class));
3. 然后 Window 可以通过 getDecorView() 方法,返回一个 View, 然后通过与指定容器的 addView(View) 方法 , 实现不同的效果
View view1 = window1.getDecorView()
View view2 = window2.getDecorView()
实际中多用简写形式,如,
container 是 ScrollView 的一个实例
container.removeAllViews(); // 移除其他所有子视图
container.addView(getLocalActivityManager().startActivity(
"Module2",
new Intent(TestView.this, ModuleView2.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) )
.getDecorView());
注意 :
container.removeAllViews(): 表示在显示该视图之前,先移除其他所有视图 .
Intent.FLAG_ACTIVITY_CLEAR_TOP: 如果在当前 Task 中,有要启动的 Activity ,那么把该 Acitivity 之前的所有 Activity 都关掉,并把此 Activity 置前以避免创建 Activity 的实例
这种方式具有很大的灵活性,常用的就是实现TabHost分页效果,但很好的避免的TabHost的缺点,如title等
如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时希望C finish掉,可以在startActivity(intent)里的intent里添加flags标记,如下所示:
- Intent intent = new Intent(this, B.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
这样启动B Activity,就会把D,C都finished掉,如果你的B Activity的启动模式是默认的(multiple) ,则B Activity会finished掉,再启动一个新的Activity B。 如果不想重新再创建一个新的B Activity,则在上面的代码里再加上:
- intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
这样B Activity就会再创建一个新的了,而是会重用之前的B Activity,同时调用B Activity的onNewIntent()方法。