第四章:Activity 的生命周期,用图示表示出来
<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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
(第四章:Activity 的生命周期,用图示表示出来)
+-------------------+ +-------------------+ +-------------------+
| onCreate | --> | onStart | --> | onResume |
+-------------------+ +-------------------+ +-------------------+
↑ | |
| ↓ ↓
+-------------------+ +-------------------+ +-------------------+
| onRestart | <-- | onStop | <-- | onPause |
+-------------------+ +-------------------+ +-------------------+
↑ |
| ↓
+-------------------+ +-------------------+
| onDestroy | <-- | onStop |
+-------------------+ +-------------------+
完整的生命周期了!
onResume (Activity 进入前台并可与用户交互=工作了。)
81页,29行代码。
2025-04-09 08:49:29.811 4698-4698/? D/MainActivityLifecycle: 生命周期:onCreate() - 活动创建
2025-04-09 08:49:29.812 4698-4698/? D/MainActivityLifecycle: 生命周期:onStart() - 活动即将可见
2025-04-09 08:49:29.815 4698-4698/? D/MainActivityLifecycle: 生命周期:onResume() - 活动可见且可交互
看到helloworld,这三个就出来了。
2025-04-09 08:50:47.442 4698-4698/? D/MainActivityLifecycle: 生命周期:onPause() - 活动即将失去焦点
2025-04-09 08:50:47.534 4698-4722/? D/EGL_emulation: eglMakeCurrent: 0xa46851e0: ver 2 0 (tinfo 0xa46835a0)
2025-04-09 08:50:47.542 4698-4698/? D/MainActivityLifecycle: 生命周期:onStop() - 活动不可见
2025-04-09 08:51:15.997 4698-4698/? D/MainActivityLifecycle: 生命周期:onRestart() - 活动重新启动
2025-04-09 08:51:15.997 4698-4698/? D/MainActivityLifecycle: 生命周期:onStart() - 活动即将可见
2025-04-09 08:51:15.997 4698-4698/? D/MainActivityLifecycle: 生命周期:onResume() - 活动可见且可交互
2025-04-09 08:51:16.035 4698-4722/? D/EGL_emulation: eglMakeCurrent: 0xa46851e0: ver 2 0 (tinfo 0xa46835a0)
2025-04-09 08:55:31.273 5149-5149/com.example.myapplication D/MainActivityLifecycle: 生命周期:onDestroy() - 活动销毁
(销毁)
2025-04-09 08:49:29.564 4698-4698/? I/art: Late-enabling -Xcheck:jni
2025-04-09 08:49:29.564 4698-4698/? W/art: Unexpected CPU variant for X86 using defaults: x86
2025-04-09 08:49:29.577 4698-4703/? I/art: Debugger is no longer active
2025-04-09 08:49:29.577 4698-4703/? I/art: Starting a blocking GC Instrumentation
2025-04-09 08:49:29.658 4698-4698/? W/System: ClassLoader referenced unknown path: /data/app/com.example.myapplication-1/lib/x86
2025-04-09 08:49:29.742 4698-4698/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
2025-04-09 08:49:29.761 4698-4698/? I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
2025-04-09 08:49:29.761 4698-4698/? I/art: at void androidx.core.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
2025-04-09 08:49:29.761 4698-4698/? I/art: at void androidx.appcompat.widget.ActionBarContainer.
2025-04-09 08:49:29.761 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
2025-04-09 08:49:29.761 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
2025-04-09 08:49:29.761 4698-4698/? I/art: at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
2025-04-09 08:49:29.761 4698-4698/? I/art: at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
2025-04-09 08:49:29.761 4698-4698/? I/art: at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
2025-04-09 08:49:29.761 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
2025-04-09 08:49:29.761 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.example.myapplication.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:14)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6662)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2599)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2707)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1460)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.os.Looper.loop() (Looper.java:154)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:866)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:756)
2025-04-09 08:49:29.762 4698-4698/? I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.example.myapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-1/lib/x86, /system/lib, /vendor/lib]]
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.core.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.appcompat.widget.ActionBarContainer.
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.example.myapplication.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:14)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6662)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
2025-04-09 08:49:29.762 4698-4698/? I/art: at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2599)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2707)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1460)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.os.Looper.loop() (Looper.java:154)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
2025-04-09 08:49:29.762 4698-4698/? I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:866)
2025-04-09 08:49:29.762 4698-4698/? I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:756)
2025-04-09 08:49:30.000 4698-4722/? I/OpenGLRenderer: Initialized EGL, version 1.4
2025-04-09 08:49:30.000 4698-4722/? D/OpenGLRenderer: Swap behavior 1
2025-04-09 08:49:30.000 4698-4722/? W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2025-04-09 08:49:30.000 4698-4722/? D/OpenGLRenderer: Swap behavior 0
2025-04-09 08:49:30.035 4698-4722/? D/EGL_emulation: eglCreateContext: 0xa46851e0: maj 2 min 0 rcv 2
2025-04-09 08:49:30.039 4698-4722/? D/EGL_emulation: eglMakeCurrent: 0xa46851e0: ver 2 0 (tinfo 0xa46835a0)
2025-04-09 08:49:30.047 4698-4722/? D/EGL_emulation: eglMakeCurrent: 0xa46851e0: ver 2 0 (tinfo 0xa46835a0)
2025-04-09 08:49:31.600 4698-4703/? I/art: Ignoring second debugger -- accepting and dropping
理论的第二道例题。
姓名:王晓明
成绩:98
是否及格:及格
第一个页面:Activity (上面的数据传递给第二个页面:secondActivity,然后第二页面接收到(姓名:王晓明
成绩:98
是否及格:及格),再反馈给第一页面:我收到了。
(课本82页,至88页,无非就是讲上面的功能。)
tools:context=.SecondActivity
<TextV
Unresolved class 'SecondActivity' 更多.... (Ctrl+F1)
(出现这种情况是说,你没有注册。)84页,这个叫清单文件。
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
(对应85页的内容,显式的Intent,就相当于一个快递员,打包好包裹了。)
intent.putExtra("name", "王晓明");
intent.putExtra("score", 98);
intent.putExtra("pass", "及格");
intent(putExtra在打包)87页的内容
String name = intent.getStringExtra("name");
int score = intent.getIntExtra("score", 0);
String pass = intent.getStringExtra("pass");
87页的内容 最后的页面代码
setResult(RESULT_OK, intent);88页