Activity是Android开发中最常用的组件。什么是Activity呢?可以简单地认为Activity就是一个界面,可以向用户展示结果并响应用户的输入请求。
在使用Activity时我们只需要继承framework里的Activity类(现在继承其他一些类比如FragmentActivity也可以,这些类可能实在support包中,这些类也都是对Activity功能的扩展),然后在manifest文件里注册该Activity就可以了,比如:
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.belows.maintest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
其中在manifest文件中的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
表示这个Activity是整个程序的入口,并当点击在Luancher中显示的程序图标时,启动的就是该Activity
那么一个Activity它在程序执行过程中的生命周期又是怎么样的呢?
当ActivityA启动后再ActivityA中,启动ActivityB,那么这两个Activity的生命周期又是怎样的呢?
首先是ActivityA的启动过程:
ActivityA onCreate->ActivityA onStart->ActivityA onResume
然后在ActivityA中启动ActivityB:
这时的生命周期是:ActivityA onPause->ActivityB onCreate->ActivityB onStart->ActivityB onResume->ActivityA onStop
也就是先会执行A的onPause方法再去启动ActivityB,按照我的理解就是在启动ActivityB之前,ActivityA应该有机会保存一些非常重要的数据(ActivityA有可能会被系统kill掉),而且应该有机会停掉一些比较消耗系统资源的操作(比如像动画等),这样在切换Activity时就能更流畅
上面是在正常操作下Activity的生命周期,当我们的Activity进入到后台后,系统由于内存紧张而将我们的Activity杀掉了,然后我们又操作重新回到之前的Activity(对用户来说是之前的Activity,但其实之前的Activity已经被杀掉了,所以系统需要重新创建,但新创建的Activity的状态应该和被杀掉的那个Activity的状态一致),整个过程Activity的生命周期又是怎样的呢?