zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    php数据库操作命令精华大全
    使用phpnow本地搭建Discuz!如何实现伪静态
    最基础的PHP分类查询程序
    p​h​p​面​试​题​笔​试​题​ ​比较有用
    kolla单节点部署openstack
    Qt 编译方式之 qbs
    Qt画图
    Qt拖拽事件
    POSTMAN学习和使用体会
    HandlerExceptionResolver的使用,返回前端相对友好的异常信息
  • 原文地址:https://www.cnblogs.com/chenchong/p/3034353.html
Copyright © 2011-2022 走看看