Android应用组件Activity

一、Activity简介

1、Activity拥有可以编辑用户界面的窗口,窗口布满整个屏幕,也可以小于或者漂浮于其他窗口之上

2、应用程序通常拥有多个互相关联的Activity和一个MainActivity

多个Activity之间跳转简单示意

二、Acitivity生命周期

Activity的声明周期是指Activity所经历的所有状态

Activty的完整生命周期是指 从第一次调用onCreate()方法开始,直到调用onDrestroy()方法位置。

Activity的可视生命周期是指 自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity。

Activity的前台生命周期是指 onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。

三、Activity的状态保存

通过onSaveInstance()方法,回收当前Activty时回调该方法

例:

package com.songjialongs.myapplication;

import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;

public class Activity_Lifecycle extends AppCompatActivity {
    EditText user_name_et;
    CheckBox rem_user_name_cb;
    boolean iscckeck = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__lifecycle);
        user_name_et = (EditText) findViewById(R.id.user_name_et);
        rem_user_name_cb = (CheckBox) findViewById(R.id.rem_user_name_cb);
        iscckeck = savedInstanceState.getBoolean("remname");
        rem_user_name_cb.setChecked(iscckeck);
        final String name = savedInstanceState.getString("name");
        rem_user_name_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    user_name_et.setText(name);
                    iscckeck = true;
                } else {
                    iscckeck = false;
                }
            }
        });
    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        String content = user_name_et.getText().toString();
        outState.putString("name", content);//参数为String Key,String Value
        outState.putBoolean("remname", iscckeck);//参数为String Key,boolean Value
    }
}

layout代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/user_name_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:text="用户名:"
        android:textSize="32sp" />

    <EditText
        android:id="@+id/user_name_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:layout_toRightOf="@id/user_name_txt" />

    <CheckBox
        android:id="@+id/rem_user_name_cb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/user_name_et"
        android:layout_below="@id/user_name_et"
        android:text="记住密码"
        android:textSize="24sp" />
</RelativeLayout>

四、Activity启动模式LaunchMode

LaunchMode是在Activity跳转的过程中,决定是否生成新的Activity,是否重用已经存在的,是否和其他实例公用一个task stack

1、Stardard模式

Stardard模式是默认启动模式,每次跳转Activity即StartActivty时都会生成一个新的Activity并压入系统默认的task stack中

package com.songjialongs.myapplication.LuancherMode;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class MainActivity extends AppCompatActivity {
    TextView activty_A_Txt;
    Button activty_A_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__main);
        activty_A_Txt = (TextView) findViewById(R.id.activty_a_txt);
        activty_A_Btn = (Button) findViewById(R.id.activity_a_btn);
        activty_A_Txt.setText(this.toString());
        activty_A_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Activity_Stardard_B.class);
                startActivity(intent);
            }
        });
    }
}
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class Activity_Stardard_B extends AppCompatActivity {
    TextView activty_B_Txt;
    Button activty_B_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__stardard);
        activty_B_Txt = (TextView) findViewById(R.id.stardard_b_txt);
        activty_B_Btn = (Button) findViewById(R.id.stardard_b_btn);
        activty_B_Txt.setText(this.toString());
        activty_B_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Activity_Stardard_B.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

2、SingleTop模式

要跳转的Activity已经存在与系统的task中,并且位于栈顶,就使用栈顶的相同的Activity;若不存在,则创建一个新的Activty,并压入系统默认的task stack

package com.songjialongs.myapplication.LuancherMode;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class MainActivity extends AppCompatActivity {
    TextView activty_A_Txt;
    Button activty_A_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__main);
        activty_A_Txt = (TextView) findViewById(R.id.activty_a_txt);
        activty_A_Btn = (Button) findViewById(R.id.activity_a_btn);
        activty_A_Txt.setText(this.toString());
        activty_A_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Activity_SingleTop_B.class);
                startActivity(intent);
            }
        });
    }
}

package com.songjialongs.myapplication.LuancherMode;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class Activity_SingleTop_B extends AppCompatActivity {
    TextView singletop_B_Btn_Txt;
    Button singletop_B_Btn_btn;
    Button singletop_BtoA_Btn_Txt;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__singletop__b);
        singletop_B_Btn_Txt = (TextView) findViewById(R.id.singletop_b_btn_txt);
        singletop_B_Btn_btn = (Button) findViewById(R.id.singletop_b_btn);
        singletop_BtoA_Btn_Txt = (Button) findViewById(R.id.singletop_btoa_btn);
        singletop_B_Btn_Txt.setText(this.toString());
        singletop_B_Btn_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Activity_SingleTop_B.this, Activity_SingleTop_B.class);
                startActivity(intent);
            }
        });
        singletop_BtoA_Btn_Txt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Activity_SingleTop_B.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

3、SingleTask模式

要跳转的Activity已经存在与栈中,就直接跳转至这个Activity;若不存在就创建一个新的Activity,并压入系统默认的task stack

package com.songjialongs.myapplication.LuancherMode;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class MainActivity extends AppCompatActivity {
    TextView activty_A_Txt;
    Button activty_A_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__main);
        activty_A_Txt = (TextView) findViewById(R.id.activty_a_txt);
        activty_A_Btn = (Button) findViewById(R.id.activity_a_btn);
        activty_A_Txt.setText(this.toString());
        activty_A_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Activity_SingleTask_B.class);
                startActivity(intent);
            }
        });
    }
}

package com.songjialongs.myapplication.LuancherMode;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class Activity_SingleTask_B extends AppCompatActivity {
    TextView activty_B_Txt;
    Button activty_B_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__singletask);
        activty_B_Txt = (TextView) findViewById(R.id.singletask_b_txt);
        activty_B_Btn = (Button) findViewById(R.id.singletask_b_btn);
        activty_B_Txt.setText(this.toString());
        activty_B_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Activity_SingleTask_B.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

4、SingleInstance模式

跳转Acitivity 新建一个task stack,将跳转的Activity压入这个task stack,并且新建的task stack只有一个Activity

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class MainActivity extends AppCompatActivity {
    TextView activty_A_Txt;
    Button activty_A_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        activty_A_Txt = (TextView) findViewById(R.id.activty_a_txt);
        activty_A_Btn = (Button) findViewById(R.id.activity_a_btn);
        activty_A_Txt.setText(this.toString() + ":栈:" + getTaskId());
        activty_A_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, Activity_SingleInstance_B.class);
                startActivity(intent);
            }
        });
    }
}
package com.songjialongs.myapplication.LuancherMode;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.songjialongs.myapplication.R;

public class Activity_SingleInstance_B extends AppCompatActivity {
    TextView singinstance_B_Txt;
    Button singinstance_B_Btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity__singleinstance);
        singinstance_B_Txt = (TextView) findViewById(R.id.singleinstance_b_txt);
        singinstance_B_Btn = (Button) findViewById(R.id.singleinstance_b_btn);
        singinstance_B_Txt.setText(this.toString() + ":栈:" + getTaskId());
        singinstance_B_Btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Activity_SingleInstance_B.this, Activity_SingleInstance_B.class);
                startActivity(intent);
            }
        });
    }
}

时间: 2024-11-05 20:47:24

Android应用组件Activity的相关文章

Android四大组件--Activity详解

Android四大组件--Activity详解 分类: android android应用android开发 本文的主要内容包括1.activity的建立.配置和使用:2.activity的跳转和传值:3.startActivityForResult:4.activity的生命周期. 1.activity的建立.配置和使用 Activity是一个应用中的组件,它为用户提供一个可视的界面,方便用户操作,比如说拔打电话.照相.发邮件或者是浏览地图等.每个activity会提供一个可视的窗口,一般情况

(9 Android) 活动组件Activity

(9 Android) 活动组件Activity 3.2.1 AppCompatActivity.Activity和Context AppCompatActivity 随着Android开发技术的发展,在不同的阶段(开发环境)创建Activity组件所使用的基类不同.在使用eclipse进行Android开发时,自动创建的MainActivity继承Activity,而Android Studio继承AppCompatActivity. Activity作为Android最重要的组件之一,用于设

Android四大组件——Activity

Activity作为Android四大组件之一,也是其中最重要的一个组件.作为一个与用户交互的组件,我们可以把Activity比较成为windows系统上的一个文件夹窗口,是一个与用户交互的界面.再进一步说,当我们拿起Android打开拨号功能,显示出拨号盘的界面其实就是一个Activity:当然,可以更大范围的说,手机屏幕上显示的任何界面都是一个个Activity. 官方对Activity的描述 Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作,

Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)

转载于:http://blog.csdn.net/byxdaz/article/details/9708491 http://blog.csdn.net/q876266464/article/details/19641251 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,Broadcast Receiver广播接收器. 一.了解四大基本组件 Activity : 应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以

Android基本组件-Activity

什么是Activity 在Android程序中,每个Activity继承自android.app.Activity, 有一个与之对应的xml布局文件, 一个界面对应一个Activity, 每个Activity都需要在AndroidManifest.xml中注册 Activity通过布局管理方式组织控件 Activity中获取控件 每个Activity中的控件都会对应在R文件之中. 在xmlAndroid基本组件-Activity

Android 四大组件------Activity

一.定义软件打开的主activity 当用户点开软件时,系统会默认调用app中声明为"launch"(或者"main")的activity中的onCreate()方法.我们一般在AndroidManifest.xml中定义主activity. <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-fil

Android成长日记-Activity

① Activity是一个应用程序组件,提供用户与程序交互的界面 ② Android四大组件 ---Activity ---Service ---BroadcastReceiver ---Content Provider ③ Android如何创建使用 继承Android的Activity类 重写方法 设置显示布局 在AndroidManifest文件中注册Activity ④ Activity的生命周期

android四大组件之广播接收器BroadcastReceiver

Android有一个非常重要的特性,就是广播.也可以将广播看做是通信机制.  Android四大组件: Activity, service, broadcastReceiver 和contentProvider, 只有Activity和service有完整的生命周期, 其他 broadcastReceiver 和contentProvider 都没有.  broadcastReceiver 本质上是一个监听器, 负责监听系统应用发出的广播(BroadCast). broadcastReceive

Android学习笔记—第二章 Android四大组件

第二章 Android四大组件 Activity(活动窗口): Android程序中最基本的模块,为用户操作而展示的可视化用户界面.一个Android应用程序可以只有一个Activity,也可以包含多个Activity,数量及每个Activity的作用取决于应用程序及其设计. (1)Activity的生命周期 创建→运行   onCreate   onStart   onResume 运行→销毁   onPause    onStop    onDestory 运行→停止(不可见  不可操作)