1.显式 隐式启(action区分大小写)动Activity
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_xianshi:
startActivity(new Intent(MainActivity.this,XianShiActivity.class));
break;
case R.id.btn_yinshi:
Intent it=new Intent();
it.setAction("yinshi");
startActivity(it);
break;
}
}
重点: 必须在将被隐式启动的Activity里加上filter
<activity
android:name=".YinShiActivity"
android:label="@string/title_activity_yin_shi" >
<intent-filter >
<action android:name="yinshi"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
在隐式启动时,intent必须完全匹配 intent-filter内容。若intent启动时没有addCategory()
则系统会默认为intent加上android.intent.category.DEFAULT,所以在intent-filter中,必须加上这句。如果intent-filter内有data属性的话,同样intent必须加上setDataAndType(),
不能分别调用setDate(),setType(),从Android源码中这两种方法里面都会将对方(data,type)至为null
注意: 隐式调用时最好判断一下是否有匹配的activity 方法如下:
if( intent.resolveActivity(getPackageManager())!=null)
startActivity(it);
1. 在Activity栈中 旧的Activity onPause() 后 新的Activity 启动,新的Activity onResume()后 旧的Activity 再onStop()
2. onSaveInstanceState()方法只在Activity被异常终止并且有机会重新显示时调用(例如横竖屏切换),正常情况下不会被调用,并且该方法在onStop之前被调用,但跟onPause()的调用没有既定的时间关系。当Activity被重新创建后,会把保存的Bundle同时传给onRestoreInstanceState(),onCreate()方法.这两种方法的区别是onRestoreInstanceState()一旦被调用,其参数Bundle一定不为null.
3. Activity设置启动模式的两种方法
静态: <activity
android:taskAffinity="com.example.androidstepdemo"
android:name=".YinShiActivity"
android:launchMode="singleTask"
android:label="@string/title_activity_yin_shi" >
动态添加:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);