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

来源:互联网 发布:我的世界js制作器教程 编辑:程序博客网 时间:2024/05/18 20:50

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

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

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

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

@Overrideprotected 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>
阅读全文
0 0
原创粉丝点击