Android 四大组件 之 活动(Activity)

缺乏、安全感 2022-05-10 23:28 422阅读 0赞

目录

Android 活动( Activity)

生命周期

使用流程图


Android 活动( Activity)

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

2、如同 Java 程序从 main() 函数开始一样,Android 系统初始化它的程序是通过活动中的 onCreate() 回调的调用开始的。

3、存在有一序列的回调方法来启动一个活动,同时有一序列的方法来关闭活动,如下面的活动声明周期图所示:

图片

4、android.app.Activity 类定义了下面的主要回调方法,可以不用实现所有的回调方法,但是其中的每一个方法都非常重要,实现这些可以保证应用行为如用户所期望的那样。






































回调 描述
onCreate() 这是第一个回调,在活动第一次创建时调用
onStart() 这个回调在活动为用户可见时被调用
onResume() 这个回调在应用程序与用户开始可交互的时候调用
onPause() 被暂停的活动无法接受用户输入,不能执行任何代码。当当前活动将要被暂停,上一个活动将要被恢复是调用
onStop() 当活动不在可见时调用
onDestroy() 当活动被系统销毁之前调用
onRestart() 当活动被停止以后重新打开时调用

生命周期

1、Activity 用于显示用户界面,用户通过 Activity 交互完成相关操作

2、一个App允许有多个Activity2015-12-01_565da69018c57.jpg

  • onPause( ) 和 onStop( ) 被调用的前提是:打开了一个新的 Activity,区别是前者的 Activity 还处于可见的状态,后者是旧Activity 已经不可见。

使用流程图

2015-12-01_565da690854f6.jpg

1、Android 中的四大组件,只要定义了,无论用没用,都要在 AndroidManifest.xml 对这个组件进行声明,不然运行时程序会直接退出,报 ClassNotFindException..

2、如下所示为 Android Studio 3.1.2 创建的 HelloWorld 应用,在其默认的 MaingActivity 文件内容上重写了 onCreate() 方法以外的其它方法:

  1. package com.example.administrator.helloworld;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. /**
  6. * 一个应用程序可以有1个或多个活动,而没有任何限制。
  7. * 每个为应用程序所定义的活动都需要在 AndroidManifest.xml 中声明,应用的主活动的意图过滤器标签中需要包含 MAIN 动作和 LAUNCHER 类别
  8. * 如果 MAIN 动作还是 LAUNCHER 类别没有在活动中声明,那么应用程序的图标将不会出现在主屏幕的应用列表中。
  9. */
  10. public class MainActivity extends AppCompatActivity {
  11. String msg = "Android : ";
  12. /**
  13. * 当活动第一次被创建时调用
  14. */
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. /**
  19. * 从项目的 res/layout 中的XML文件加载 UI 组件
  20. * android.util.Log#d(java.lang.String, java.lang.String) 方法用于在 Logcat 窗口中打印日志
  21. */
  22. setContentView(R.layout.activity_main);
  23. Log.d(msg, "The onCreate() event");
  24. }
  25. /**
  26. * 当活动即将可见时调用
  27. */
  28. @Override
  29. protected void onStart() {
  30. super.onStart();
  31. Log.d(msg, "The onStart() event");
  32. }
  33. /**
  34. * 当活动可见时调用
  35. */
  36. @Override
  37. protected void onResume() {
  38. super.onResume();
  39. Log.d(msg, "The onResume() event");
  40. }
  41. /**
  42. * 当其他活动获得焦点时调用
  43. */
  44. @Override
  45. protected void onPause() {
  46. super.onPause();
  47. Log.d(msg, "The onPause() event");
  48. }
  49. /**
  50. * 当活动不再可见时调用
  51. */
  52. @Override
  53. protected void onStop() {
  54. super.onStop();
  55. Log.d(msg, "The onStop() event");
  56. }
  57. /**
  58. * 当活动将被销毁时调用
  59. */
  60. @Override
  61. public void onDestroy() {
  62. super.onDestroy();
  63. Log.d(msg, "The onDestroy() event");
  64. }
  65. }

3、一个应用程序可以有 1 个或多个活动,而没有任何限制。

4、每个为应用程序所定义的活动都需要在 AndroidManifest.xml 中声明,应用的主要活动声明的意图过滤器标签中需要包含 MAIN 动作和 LAUNCHER 类别,如下所示:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.lct.www.xiong">
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher"
  7. android:label="@string/app_name"
  8. android:roundIcon="@mipmap/ic_launcher_round"
  9. android:supportsRtl="true"
  10. android:theme="@style/AppTheme">
  11. <activity android:name=".MainActivity">
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN" />
  14. <category android:name="android.intent.category.LAUNCHER" />
  15. </intent-filter>
  16. </activity>
  17. </application>
  18. </manifest>

5、不论是 MAIN 动作还是 LAUNCHER 类别没有在活动中声明,那么应用程序的图标将不会出现在主屏幕的应用列表中。

发表评论

表情:
评论列表 (有 0 条评论,422人围观)

还没有评论,来说两句吧...

相关阅读