一:本节知识点
二:Activity生命周期状态
图片来源与来自这里
就通过一张图可能不容易理解吧,那举个栗子吧
栗子:新建一个安卓项目,在后端添加以下代码(添加日志打印,重写生命周期相应方法)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MainAction","调用onCreeate()");
}
@Override
protected void onStart() {
super.onStart();
Log.i("MainAction","调用onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.i("MainAction","调用onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.i("MainAction","调用onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.i("MainAction","调用onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("MainAction","调用onDestroy()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MainAction","调用onRestart()");
}
//(点击跳转)点击事件,点击跳转到activity_son
public void btn_onclick(View view) {
//启动另一个action
Intent intent=new Intent(MainActivity.this,SonActivity.class);
startActivity(intent);
}
public void finish(View view) {
finish();
}
运行程序,观看Logcat
为了更好的观察我们添加相应过滤
输入自己日志的Tag
①:启动程序(对应图上ActivityStarts)
②:点击切换到另一个界面
③:再返回原界面
④:退出程序
总结
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
三:Activity的创建和配置
1:直接创建XML布局文件,然后添加标签
①:直接创建XML布局文件
②:然后在AndroidManifest.Xml中添加标签
标签名为".布局名"
完整名应该是:包名.布局名
由于上面已经加了包名所以可以省略
2:直接创建,自动生成标签
四:开启和关闭Activity
1:Intent(我们常说的意图)
PackageContext:应用程序包实现的上下文
CLS:要用于意图的组件类。
创建一个从MainActivity.this下跳转到SonActivity.class中去的意图,然后通过StartActivity方法启动意图
进入到SonActivity.class中
通过onCreate()方法进行创建然后按照Activity生命周期
onCreate()=>onStart()=>onResume()=>当前Activity显示。
2: finish();方法是关闭当前Activity
这里finish是直接在首窗体(启动窗体)里创建的点击事件,当用户点击时当前Activity就关闭了,由于是首窗体(启动窗体),所以用户点击时直接关闭程序。
3:整个项目代码详情
①:activity_main.xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_onclick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:layout_marginBottom="13dp"
android:onClick="btn_onclick"
android:text="点击跳转"
app:layout_constraintBottom_toTopOf="@+id/btn_OnClickfinish"
app:layout_constraintStart_toStartOf="@+id/btn_OnClickfinish" />
<Button
android:id="@+id/btn_OnClickfinish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="291dp"
android:onClick="finish"
android:text="点击关闭程序"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
②:activity_son.xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SonActivity"
tools:ignore="NamespaceTypo">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="340dp"
android:text="Hello Word!"
android:textColor="#000"
android:textSize="50sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.56"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
③:后端代码
package cn.cg.lifecycle;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
//由系统调用:回调
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MainAction","调用onCreeate()");
}
@Override
protected void onStart() {
super.onStart();
Log.i("MainAction","调用onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.i("MainAction","调用onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.i("MainAction","调用onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.i("MainAction","调用onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i("MainAction","调用onDestroy()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i("MainAction","调用onRestart()");
}
//(点击跳转)点击事件,点击跳转到activity_son
public void btn_onclick(View view) {
//启动另一个action
Intent intent=new Intent(MainActivity.this,SonActivity.class);
startActivity(intent);
}
public void finish(View view) {
finish();
}
}
4:运行效果
点击跳转
点击关闭程序,退出此程序