Activity的四种加载模式(3)
来源:未知 责任编辑:责任编辑 发表时间:2014-02-18 03:21 点击:次
super.onNewIntent(intent);
}
//点击进入加载Activity1
@Override
public boolean onTouchEvent(MotionEvent event) {
Intent intent = new Intent(this, Activity1.class);
startActivity(intent);
return super.onTouchEvent(event);
}
}
同样,我们启动程序,开启Activity1,然后点击Acitivity1,启动另一个Activity1,然后再点击,再点击,再点击... 之后我们点返回键。
结果,Activity1第一次创建时,显示一个Toast提示,onCreate被调用,当再次点击时,onCreate没有被调用相反是进入了onNewIntent函数。当按返回键时,直接退出了该应用,可见,堆栈中只存在一个Acitivity1。
可见,当activity被设置为singleTop的加载模式时,如果堆栈的顶部已经存在了该Activity,那么,它便不会重新创建,而是调用onNewIntent。如果,该Activity存在,但不是在顶部,那么该Activity依然要重新创建,请读者自行验证。
因此singleTop模式的思想便是“拒绝堆叠”!
以上说的两种加载模式,Activity均可以实例化多次,而下面讲的两个加载模式就只可以实例化一次。
“独立门户”——singleTask模式
我们首先测试一下,在本应用内调用singleTask模式的Activity会出现什么情况。
我们写两个Activity(Activity1和Activity2),相互调用,其中Activity1为singleTask模式。AndroidManifest.xml如下:
Java代码
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activity1"
android:launchMode="singleTask"
android:label="@string/app_name">
</activity>
<activity android:name=".Activity2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>