Android开发艺术探索笔记 第一章Activity

这里写图片描述

1.Activity异常的生命周期

   @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //资源相关的系统配置文件发生改变时或者内存不足时,导致Activity被杀死并重写创建调用
        //可以用来保存下次需要回复的数据
    }
  @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //取出之前保存的数据并恢复,和onCreate方法参数的区别是,这个方法一旦被调用 Bundle 里
        //一定有数据,不需要判断null
    }

总结: 异常的时候才会回调这两个方法用于保存和恢复数据。

当在清单文件的activity声明中加了 android:configChanges="keyboardHidden|orientation|screenSize" 屏幕旋转时,activity就不会重建,也不会调用上面两个方法,但是会调用`

 @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        //处理屏幕旋转时的事件
    }`

2.Activity启动模式
任务栈是一种后进先出的模式

(1)standard标准启动模式:A启动B,那么B就在A的任务栈里面,每次都会创建一个新的实例。注意:非Activity的Context 去启动活动会报错(如ApplicationContext不能启动) 如果非要启动的话 必须加上标记 Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 这样启动的Activity实际上是以singleTask模式启动的。

(2)singleTop栈顶复用模式:A启动B之后,又启动B。B不会被重新创建,他的onCreate和onStrart不会回调。会调用:

   @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    }

(3)singleTask栈内复用模式:,有就会调用onNewIntent,只不过是把他上面的全部清除了

(4)singleInstance单实例模式: 如果一个任务栈里面没有就创建新的任务栈。

3.IntentFilter匹配规则

1.action的匹配规则:intent中的action必须存在且必须和过滤规则中的一个匹配成功。

2.category:intent中可以没有category,但是如果有必须和过滤规则中的一个匹配成功。intent中默认带上了android.intent.category.DEFAULT 所以清单里默认加了 <category android:name="android.intent.category.DEFAULT" />

3.data:由mimeType媒体类型和URL组成 ,intent中的data必须存在且必须和过滤规则中的一个匹配成功.

URL有默认值:content或者是file.所以要匹配 schema必须指定 他们当中其中一个。

注意:查看是否有能匹配的activity可以通过如下方法判断:

        PackageManager manager = this.getPackageManager();
        manager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);//是否有判断null
        manager.resolveActivity(intent,PackageManager.MATCH_DEFAULT_ONLY);//成功匹配返回的信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值