Activity类是Android组件非常重要的部分之一。任何应用程序,无论它有多小(就代码和可伸缩性而言),都至少具有一个Activity类。与大多数编程语言不同,在大多数编程语言中, main()方法是该程序或应用程序开始执行的入口点,而android操作系统则通过调用与的特定阶段相对应的特定回调方法来在Activity实例中初始化代码。它的生命周期。因此可以说,活动是与用户进行交互的入口点。每个活动都包含布局,该布局具有用于与用户交互的用户界面。我们知道每个活动都包含与之关联的布局,因此可以说活动类是网关,用户可以通过该网关与UI进行编程交互。借助setContentView()设置特定活动的布局。的setContentView()是一个函数,它查看作为参数。 view参数基本上包含该活动的布局文件。下图显示activity_main是MainActivity的布局文件。
在Java的情况下:
对于Kotlin:
虽然活动通常以全屏窗口,多窗口模式或画中画模式呈现给用户,但以下两种方法几乎是Activity的所有子类都将实现的:
- onCreate()
- onPause()
1. onCreate()方法
Syntax:
protected void onCreate(Bundle savedInstanceState)
- onCreate(Bundle)方法是用户初始化活动的地方。活动开始时将调用此方法。这是用于初始化android应用中大多数事物的方法。 onCreate()方法将saveInstanceState作为参数,该参数是Bundle类型的对象,即包含先前保存的活动数据的Bundle Object。如果该活动是新创建的,则该捆绑包将不会保存该活动的任何数据,并且将包含空值。
- onCreate()方法调用setContentView()方法来设置与活动相对应的视图。默认情况下,在任何android应用程序中,setContentView都指向activity_main.xml文件,该文件是与MainActivity相对应的布局文件。 onCreate方法使用findViewById()方法,以便用户可以通过编程方式与android中的小部件进行交互,然后根据需要自定义它们。
Bundle :如果活动在先前关闭后正在重新初始化或重新启动,则此Bundle将其最近提供的数据包含在onSaveInstanceState(Bundle)中。 onSaveInstanceState()方法是在我们的活动被终止之前用于保存数据的方法。
2. onPause()方法
Syntax:
protected void onPause()
当用户不再主动与活动交互但在屏幕上仍可见时,此方法称为活动生命周期的一部分。假设用户正在手机上同时运行两个应用程序,即当活动B在活动A之前启动时,活动A将进入onPause()状态,活动B将进入onStart()状态。活动生命周期。要记住的重要一点是,对于要由系统(即android)访问的任何活动,必须在清单文件中声明该活动。清单文件是应用程序中包含的XML文件,默认名为AndroidManifest.xml。
在清单文件中声明活动
打开app文件夹,然后打开子文件夹清单,然后打开AndroidManifest.xml文件。
假设读者希望除了项目中默认包含的MainActivity之外还有一项活动。在添加更多活动而不进行任何更改之前,让我们看一下AndroidManifest.xml文件的外观:
现在,我们添加另一个名为SecondActivity的活动,并查看如何在清单文件中对其进行声明。必须在应用程序标记中编写声明代码,否则,声明将给出错误,并且系统将不会检测SecondActitvity。声明代码如下。
android:name=”.SecondActivity” android:label=”@string/app_name” >
因此可以得出结论,一个应用程序可以具有一个或多个活动,而没有任何限制。 android应用程序使用的每个活动都必须在AndroidManifest.xml文件中声明。并且应用的主要活动必须在清单中用
向应用程序添加权限
应该记住,开发人员要在android应用程序中使用的任何服务,例如Internet服务,蓝牙服务,Google Maps,App Notification Service等,要使用此服务中的任何一项,开发人员都需要获得android的许可系统。所有这些许可或请求都必须在清单文件中声明。按照上面显示的步骤打开AndroidManifest.xml文件。假设用户需要添加Internet权限,该权限需要由应用访问。在清单标记中添加以下Internet权限。
假设需要在应用程序中添加蓝牙权限,那么必须这样声明:
注意:从概念上讲,必须清除,尽管Activity类让MainActivity在顶部给出的代码片段中扩展了AppCompatActivity,但内部结构类似于下图所示。可以看出AppCompatActivity也扩展了Activity类。