活动是一种可以包含用户界面的组件,主要用于和用户进行交互,一个应用程序中可以包含一个或多个活动。但只有一个主活动,主活动可以跳转到其他活动。
1. 创建活动
- 手动创建
- 利用AS创建
2. 活动注册
<activity android:name=".FirstActivity"><intent-filter><action android:name="android.intent.action.MAIN"></action><category android:name="android.intent.category.LAUNCHER"></category></intent-filter></activity>
3. 销毁活动
Activity类提供了一个Finish方法,调用该方法可以销毁当前活动,效果和点击Back键相同。
button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(FirstActivity.this,"you clicked button1", Toast.LENGTH_SHORT).show();finish();}});
4. Intent
Intent是Android程序中各组件之间进行交会的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
- 启动活动
- 启动服务
- 发送广播场景
1.显式Intent
//FirstActivity.javapackage com.example.activitydemo;// 这里省略import语句public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_layout);Button button1 = (Button) findViewById(R.id.button);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(FirstActivity.this,SecondActivity.class);startActivity(intent);}});}};
Intent构造函数,
Intent(Context packageContext, class<?>cls)第一个参数Context要求提供一个启动活动的上下文,第二个参数class指定想要启动的目标活动,通过这个构造函数就可以构建出Intent的”意图”,通过startActivity启动这个意图。
2.隐式Intent
通过intent-filter来实现
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitydemo"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name2"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".SecondActivity"><intent-filter><action android:name="test"></action><category android:name="android.intent.category.DEFAULT"></category><category android:name="my_category"></category></intent-filter></activity><activity android:name=".FirstActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
//FirstActivity.javapackage com.example.activitydemo;// 这里省略import语句public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_layout);Button button1 = (Button) findViewById(R.id.button);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("test");// 添加categoryintent.addCategory("my_category");startActivity(intent);}});}};
每个intent只能有一个action,但是可以有多个category,通过addCategory可以添加category。
3.Intent传递数据
向下一个action传递数据
//Intent 缓存数据Intent intent = new Intent(FirstActivity.this,SecondActivity.class)String data = "Hello Second";intent.putExtra("extra_data", data);// 获取Intent缓存的数据Intent intent = getIntent();String data = intent.getStringExtra("extra_data");
启动活动时传递数据很简单,Intent中提供了一系列
putExtra方法的重载,可以把需要传递的数据缓存在Intent中。启动另一个活动后,再从Intent中取出数据。
向上一个action传递数据
- startActivityForResult开启下一个活动
- setResult传递数据
- 重写onActivityResult方法
5. 活动的生命周期
1.栈
Android通过栈来管理活动,开启或销毁一个活动就会触发进栈和出栈。
2.活动状态
运行状态**
当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。
暂停状态
活动不处于栈顶,但可见。
停止状态
活动不位于栈顶,不可见。
销毁状态
活动从返回栈中移除后就处于销毁状态。
3. 活动的生存期
- onCreate():活动在第一次被创建的时候调用,应该在该方法中完成活动的初始化操作,比如加载布局,绑定事件等。
- onStart(): 活动由不可见变为可见的时候调用。
- onResume():这个方法在活动准备好和用户进行交互的时候调用,此时活动一定位于返回栈的栈顶,并且处于运行状态。
- onPause():系统准备去启动或者恢复另一个活动的时候调用。
- onStop():这个方法在活动完全不可见的时候调用。
- onDestory():这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。
- onRestart(): 活动由停止状态变为运行状态之前调用。

