您的位置:首页 > 移动开发 > Android开发

android Activity相关笔记

2016-03-20 19:35 483 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: