Android Activity相关笔记

来源:互联网 发布:网络直播股票 编辑:程序博客网 时间:2024/05/01 12:31

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);

0 0
原创粉丝点击