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

Android 开发艺术探索 学习笔记 Activity

2017-08-28 19:31 483 查看

一、保存活动异常销毁前的数据

1.保存的方法如下,仅在异常销毁时调用.常见的活动异常销毁情况有:内存不够系统回收后台活动,横竖屏切换。

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("key", "想要保存的信息");
}


2.取出保存数据的方法,仅在异常销毁后重新加载活动时调用:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String str = savedInstanceState.getString("key");//取出之前保存的信息

}


3.防止横竖屏切换导致的活动异常销毁

在有此要求的活动的注册位置(AndroidManifest.xml中)加如下代码:

android:configChanges="orientation"


二、activity启动模式

1.四种启动模式:

Standard :默认

singleTop:栈顶有则不新建activity

singleTask:任务栈中有则,不会新建activity,将目标activity之前的activity都出栈

singleInstance:有所有singleTask的特点,并且所有activity都在一个栈里

2.指定Activity的启动方式的两种方法:

(1)AndroidManifest.xml中的activity注册的地方添加如下代码:

android:launchMode=”standard”

(2)跳转用的Intent设置标志

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//相当于singleTask


而FLAG_ACTIVITY_SINGLE_TOP 相当于singleTop

三、隐式intent

这里,书上出现前后矛盾的说辞,有一些错误,以下是在android 7.0 模拟器上实验后的结论。

当intent同时出现显示隐式定义时,以显示为主。

1.action

隐式intent必须至少定义一个action,跳转语句只要匹配其中一个就可以了

2.category

隐式intent的category跳转语句只要匹配其中一个就可以了,并且至少定义以下一句(任何情况这一句都是必须定义的,但无需人为匹配):

下面一个例子:

java代码部分

Intent intent = new Intent();
intent.setAction("ACTION_1");
intent.addCategory("CATEGORY_2");
startActivity(intent);


AndroidManifest.xml中:

<activity android:name=".SecondActivity">
<intent-filter >
<action android:name="ACTION_1"/>
<action android:name="ACTION_2"/>
<category android:name="CATEGORY_1"/>
<category android:name="CATEGORY_2"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: