android 手机开机后,应用application 类在什么时机启动?
时间: 2023-12-27 09:04:57 浏览: 44
在 Android 应用程序中,Application 类的实例是在应用程序启动时创建的。当你的应用程序被安装在设备上并且用户第一次打开应用程序时,系统会创建 Application 类的一个实例,并调用它的 onCreate() 方法。在此之后,系统将在整个应用程序的生命周期内保持该实例。
当设备启动时,系统会自动启动一些应用程序组件,比如 Activity、Service、BroadcastReceiver 等,这些组件的启动过程中,都会涉及到 Application 类的实例的创建和使用。例如,当你的应用程序启动一个 Activity 时,系统会先创建 Application 类的实例,然后再创建 Activity 的实例,并将 Application 实例传递给 Activity。此后,Activity 可以通过 getApplication() 方法获取该实例,并在整个应用程序中共享它。
需要注意的是,当设备重新启动时,系统会销毁之前创建的所有应用程序组件和 Application 实例,并重新创建它们。因此,在设计应用程序时,需要考虑到这一点,并确保应用程序的状态能够在重新启动后正确地恢复。为此,可以使用一些持久化技术,比如 SharedPreferences、SQLite 数据库等,将应用程序的状态保存到文件或数据库中,以便在重新启动后进行恢复。
相关问题
android application 类在app当中有什么用?该怎么使用呢?
在 Android 应用程序中,Application 类是一个基类,它是应用程序全局状态的基础。它是一个单例,表示整个应用程序的上下文。Application 类可以用来保存应用程序级别的状态,比如全局变量、共享的资源、应用程序生命周期的回调等。
在 Android 应用程序中,我们可以通过继承 Application 类来创建我们自己的 Application 对象,并在整个应用程序中共享它。我们可以在 AndroidManifest.xml 文件中声明我们的 Application 类,以便系统可以在应用程序启动时自动创建它。
例如,我们可以在 Application 类中创建一个静态变量,用于保存应用程序的全局计数器。每当应用程序中的某个组件(如 Activity 或 Service)启动或停止时,我们可以在 Application 类中更新计数器的值。这样,我们就可以在整个应用程序中跟踪应用程序的活动数量。
另外,我们还可以在 Application 类中注册一些全局的回调函数,比如应用程序的生命周期回调函数,这些回调函数将在整个应用程序的生命周期内得到执行,以便我们可以在这些回调函数中执行一些全局的操作,比如释放资源、保存状态等。
Android 在应用的AndroidManifest.xml当中的application标签当中设置android:persistent="true"时,开机后系统会自动启动应用的application类吗?
不是的。在 AndroidManifest.xml 中设置 android:persistent="true" 属性,只是表示该应用程序是“持久化”的,即在设备重启后仍然会保留。这个属性的作用是告诉系统,在设备重启后,该应用程序的数据和状态应该得到恢复。
当设备重启后,系统会自动恢复所有持久化的应用程序,包括它们的数据和状态。但是,系统并不会自动启动这些应用程序的 Application 类。如果你需要在设备重启后自动启动应用程序的 Application 类,你可以考虑使用 BroadcastReceiver。
具体来说,你可以创建一个 BroadcastReceiver,并在它的 onReceive() 方法中启动你的 Application 类。然后,在 AndroidManifest.xml 文件中声明这个 BroadcastReceiver,同时注册一个 BOOT_COMPLETED 的 Intent 过滤器,以便在设备重启后接收到该广播,并启动你的 Application 类。例如:
```xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name=".MyApplication"
android:persistent="true"
...>
...
</application>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
```
其中,BootReceiver 是你创建的 BroadcastReceiver 类,它的 onReceive() 方法中可以启动你的 Application 类。注意,你需要在 AndroidManifest.xml 文件中声明 RECEIVE_BOOT_COMPLETED 权限,以便接收到 BOOT_COMPLETED 广播。