Android 组建-Activity介绍

简介: 活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧。Android 的活动是 ContextThemeWrapper 类的子类。

Android 活动(Activity)

活动代表了一个具有用户界面的单一屏幕,如 Java 的窗口或者帧。Android 的活动是 ContextThemeWrapper 类的子类。

如果你曾经用 C,C++ 或者 Java 语言编程,你应该知道这些程序从 main() 函数开始。很类似的,Android 系统初始化它的程序是通过活动中的 onCreate() 回调的调用开始的。存在有一序列的回调方法来启动一个活动,同时有一序列的方法来关闭活动,如下面的活动声明周期图所示:

Activity 类定义了下面的回调。你可以不用实现所有的回调方法。当了解其中的每一个非常的重要,实现这些可以保证你的应用行为如用户所期望的那样。

回调

描述

onCreate()

这是第一个回调,在活动第一次创建的时候调用

onStart()

这个回调在活动为用户可见时被调用

onResume()

这个回调在应用程序与用户开始可交互的时候调用

onPause()

被暂停的活动无法接受用户输入,不能执行任何代码。当当前活动将要被暂停,上一个活动将要被恢复时调用(切后台会调用这个,然后切回来先调用onStop()方法,之后就会调用onPause()方法)

onStop()

当活动不在可见时调用(切后台会调用这个)

onDestroy()

当活动被系统销毁之前调用

onRestart()

当活动被停止以后重新打开时调用,切后台回来,会调用onRestart()方法

以下是实例:

packagecom.example.emo;
importandroidx.annotation.Nullable;
importandroidx.appcompat.app.AppCompatActivity;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.os.PersistableBundle;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.TextView;
publicclassMainActivityextendsAppCompatActivity {
Stringmsg="activity_demo";
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(msg, "The onCreate() event");
TextViewview=findViewById(R.id.main_text);
view.setText("你好");
Viewbutton=findViewById(R.id.button);
button.setOnClickListener(
newView.OnClickListener() {
@OverridepublicvoidonClick(Viewview) {
Log.d("button", "i am clicked");
                }
            }
        );
button.setOnTouchListener(newView.OnTouchListener() {
@OverridepublicbooleanonTouch(Viewview, MotionEventmotionEvent) {
Log.d("button", "i am touched");
returnfalse;
            }
        });
Viewbutton_enter=findViewById(R.id.button_enter);
button_enter.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewview) {
EditTexteditText=findViewById(R.id.input);
Log.d("edit", editText.getText().toString());
            }
        });
    }
@OverrideprotectedvoidonStart() {
super.onStart();
Log.d(msg, "The onStart() event");
    }
@OverrideprotectedvoidonStop() {
super.onStop();
Log.d(msg, "The onStop() event");
    }
@OverrideprotectedvoidonDestroy() {
super.onDestroy();
Log.d(msg, "The onDestroy() event");
    }
@OverrideprotectedvoidonPause() {
super.onPause();
Log.d(msg, "The onPause() event");
    }
@OverrideprotectedvoidonResume() {
super.onResume();
Log.d(msg, "The onResume() event");
    }
@OverrideprotectedvoidonRestart() {
super.onRestart();
Log.d(msg, "The onRestart() event");
    }
}
TheonCreate() eventTheonStart() eventTheonResume() eventTheonPause() eventTheonStop() eventTheonRestart() eventTheonStart() eventTheonResume() eventTheonPause() eventTheonStop() event
相关文章
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
94 6
|
2月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
28 3
|
2月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
24 3
|
5月前
|
Android开发
Android面试题之Activity的启动模式和flag
Android Activity的四种启动模式:standard(默认,每次启动创建新实例),singleTop(栈顶复用,不走onCreate,调用onNewIntent),singleTask(栈内唯一,清除上方Activity)和singleInstance(单独栈内唯一)。启动模式在AndroidManifest.xml中配置,Intent Flags如FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP可实现类似功能。了解这些对于处理Activity栈管理至关重要。
55 0
|
7月前
|
XML Java Android开发
利用Bundle实现Android Activity间消息的传递
利用Bundle实现Android Activity间消息的传递
58 2
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
19 0
|
3月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
55 4
|
4月前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
95 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
3月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
56 0
|
4月前
|
开发工具 Android开发
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
97 1