个人自学总结
先掏出Activity生命周期的这张图.

全文都需要重写MainActivity.java中所有关于生命周期的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "onRestart");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy");
}
一、点击back对Activity生命周期的影响

正常进入后点击back

***直接Destroy了!!!!***
二、点击home对Activity生命周期的影响
不再付打开的及图片啦
进入程序后点击home键返回

***注意区分和上面的区别***
然后我们分别尝试
从任务管理器
点击icon返回程序

此时可以看到结果一样
三、横屏对Activity生命周期的影响
***必须真机调试,要打开旋转功能才能实现***
正常进入程序后我们旋转手机横屏

此时我们看到横屏之后activity自动onPause->onStop->onDestory然后重新onCreate->onStrat->onResume了一个新的Activity!
关于横屏数据保存
**以下情况都需要对activity_main.xml进行如下更改**
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/but"
android:text="一个按钮"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="but_onClick"
/>
</LinearLayout>
四、弹Dialog时对Activity生命周期的影响
推荐个关于dialog的文章
先在MainActivity添加一段关于Dialog代码如下
public void but_onClick(View view) {
builder =new AlertDialog.Builder(this)
.setIcon(R.mipmap.ic_launcher)
.setTitle("Dialog")
.setMessage("一个dialog")
.setPositiveButton("确定", (dialogInterface, i) -> Toast.makeText(this, "确定按钮", Toast.LENGTH_LONG).show())
.setNegativeButton("取消", (dialogInterface, i) -> {
Toast.makeText(this, "关闭按钮", Toast.LENGTH_LONG).show();
dialogInterface.dismiss();
});
builder.create().show();
}
运行一下

按顺序一次出现
onCreate->onStrat->onResume

此时logcat页面并没有任何变化,Activity生命周期没有任何变化

正常显示
onPause->onStop->onDestory
结束
五、弹PopupWindow时对Activity生命周期的影响
*****不出意外效果一样*****
public void but_onClick(View view) {
View vi = LayoutInflater.from(this).inflate(R.layout.popup, null, false);
final PopupWindow popWindow =new PopupWindow(vi, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
popWindow.showAsDropDown(view, 50, 0);
}
popup.xml
<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity1"
/>
</LinearLayout>

六从主Activity上弹出一个半屏Activity对主Activity生命周期的影响
*****不出意外效果还是一样*****
package com.hrk.activity3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class Activity2extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
android.view.WindowManager.LayoutParams p = getWindow().getAttributes();
p.height =1000;
getWindow().setAttributes(p);
}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="30dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity2"
/>
</FrameLayout>
public void but_onClick(View view) {
Intent intent =new Intent(this, Activity2.class);
startActivity(intent);
}

七、从主Activity跳转到另一个Activity对主Activity生命周期的影响
先在MainActivity添加一段关于Dialog代码如下
public void but_onClick(View view) {
Intent intent =new Intent(this, Activity2.class);
startActivity(intent);
}
然后再创建一个 Activity2.class
正常启动后点击按钮

此时我们可以看到主Activity并没有onDestory
点击back返回
