android Activity相关笔记

26 篇文章 0 订阅

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值