Android基础(八) Activity的启动模式 内存管理

一、Activity的启动模式

    在清单文件AndroidManifest.xml中的<activity>标签中可以配置android:launchMode属性,用来控制Actvity的启动模式。

    在Android系统中,我们创建的Activity是以栈的形式呈现的:

        standard:每次调用startActivity(Intent intent)方法时,都会创建一个新的Activity放在栈顶。

        singleTop:在启动Activity时,如果指定的Activity不在栈顶就创建Activity;如果栈顶已经存在要创建的Activity,则不再创建。

        singleTask:如果要启动的Activity不存在则创建新的Activity,如果已存在要创建的Activity则直接跳转到指定的Activity,并将栈顶的Activity全部结束。

        singleInstance:如果要启动的Activity不存在则创建新的Activity,如果已经存在要创建的Activity,则将指定的Activity移动到栈顶。

 

a.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="A_Activity"
        android:textSize="30sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="openA"
        android:text="打开A" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="openB"
        android:text="打开B" />

</LinearLayout>
public class A_Activity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.a);
    }
    
    public void openA(View view) {
    	startActivity(new Intent(this, A_Activity.class));
    }
    
    public void openB(View view) {
    	startActivity(new Intent(this, B_Activity.class));
    }
}

b.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="B_Activity"
        android:textSize="30sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="openA"
        android:text="打开A" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="openB"
        android:text="打开B" />

</LinearLayout>
public class B_Activity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.b);
    }
    
    public void openA(View view) {
    	startActivity(new Intent(this, A_Activity.class));
    }
    
    public void openB(View view) {
    	startActivity(new Intent(this, B_Activity.class));
    }
    
}

 

二、内存管理

    Android系统在运行多个程序时,如果系统的资源不足,就会强制结束一些进程。而系统会选择哪些进程结束有着不同的优先级。以下情况被结束的优先级由高到低:

    空:进程中所有的Activity都已经被销毁

    后台:进程中还有一个处于停止状态的Activity

    可见:进程中还有一个处于暂停状态的Activity

    前台:进程中正在运行一个Activity

posted on 2013-04-21 20:14  foolchen  阅读(326)  评论(0编辑  收藏  举报

导航