一、Activity是什么?
Activity是Android的四大组件之一,用来显示View,它提供一个屏幕来与用户交互。

二、Activity的基本用法
1、需创建一个Activity的子类(通过extends RxAppCompatActivity,或现有子类如BaseActivity的子类);
在子类中,实现需要用到的Activity的生命周期,例如在创建,停止,恢复或销毁活动;

2、访问Activity时,必须在manifest中声明此Activity

<!-- 主Activity的配置-->
<activity android:name=".activity.TestActivity">
        <intent-filter>
             <action android:name="android.intent.action.MAIN" />

             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
</activity>

<!-- 一般Activity的配置-->
<activity android:name=".activity.Test1Activity"/>

3、activity的启动
以上配置的是主Activity即应用启动显示的第一个界面,启动一般Activity则是通过startActivity()方法,并将Intent传递给要启动的Activity;
启动方式也分为两种:
一种是Intent的显示启动,代码如下:

Intent intent = new Intent(this, Test1Activity.class);
startActivity(intent);

另一种则是Intent隐式启动,代码如下:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_PACKAGE_NAME, "pacname");
startActivity(intent);

当从启动后的Activity返回时需要从上一个Activity接收返回数据结果则要用另外一种一种启动方式startActivityForResult(intent, Constants.REQUESTCODE);

主Activity中设置
Intent intent = new Intent(MainActivity.this, TestActivity.class);
startActivityForResult(intent, Constants.REQUESTCODE);

然后在启动的Activity中 
setResult(Constants.RESULTCODE);

当Activity返回时则会回调
@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }

三、Activity的生命周期

package com.example.demo.activity;

import android.os.Bundle;

import com.example.demo.R;
import com.trello.rxlifecycle.components.support.RxAppCompatActivity;

public class TestActivity extends RxAppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }
}

activity能嵌套activity吗 android .activity_ide


除了以上七种生命周期,还有一个onSaveInstanceState() ,是用来保存用户状态信息;

其常用场景是某些设备配置可能会在运行时更改(例如屏幕方向和语言等)

四、Activity的四种启动模式
1、启动模式的设置
方法一
在AndroidMainifest设置:android:launchMode=“启动模式”,对应启动模式种类有:
A、standard:每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在,先进后出原则;
B、singleTop:singleTop模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它不创建新的实例。如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶;
C、singleTask:每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例,让某个Activity在当前栈中只存在一个实例;
D、singleInstance:Activity在整个系统中都只有一个实例适用。不同于以上介绍的三种模式,指定为singleInstance模式的Activity会启动一个新的任务栈来管理这个Activity。

方法二:通过Intent设置标志位

Intent intent = new Intent(MainActivity.this, TestActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

标记位属性:
A、FLAG_ACTIVITY_SINGLE_TOP:Activity指定SingleTop启动模式
B、FLAG_ACTIVITY_NEW_TASK:Activity指定SingleTask启动模式
C、FLAG_ACTIVITY_CLEAR_TOP:具有此标记位的Activity,启动时会将与该Activity在同一任务栈的其他Activity出栈。一般与SingleTask启动模式一起出现。
D、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:具有此标记位的Activity不会出现在历史Activity的列表中。

五、关闭Activity
直接调用其finish()方法