我对这两者之间的区别感到困惑。在我的应用程序中,我只使用了“Extends Activity”,并且应用程序完美运行,那么“Extends Application”的目的是什么?
你会在创建Android应用程序的第一个类上使用它吗?
谢谢。
android.app.Application类是一个可选的功能,用于扩展和存储应用程序全局状态。虽然有其他方法可以实现此功能,但大多数应用程序不自定义此类。
然而,活动是定义应用程序每个主要阶段的组成部分。没有活动,就不可能构建应用程序。您将拥有一个主Activity类,并且这确实会通过“扩展Activity”来定义。
看到区别的最佳方式是查看它的类层次结构。
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Application
应用程序是在 Android 应用进程被杀死之前一直存在的东西。您可以使用它来存储应用程序特定的数据(只要您的应用程序还活着),这些数据可能会在各种活动中使用。请注意,我并不是说您应该......根据您的用例,共享首选项可能是另一种合适的方法。此外,仅为了明确起见,您不能使用您的应用程序启动您的应用程序,与您在清单文件中提供的启动器活动不同。
您可以按照以下方式使用自己的自定义 Application 类
<application
android:name="icom.osfg.test.app.AppController"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyTheme" >
<!-- all the activities goes here -->
</application>
何处
AppController extends Application
Application
类将作为单例对象存在,只要您的应用程序还在运行,它就会一直存在。Activity
生命周期,可以在您的 Application
扩展类中初始化全局组件,因为它将持续到进程结束。public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Parse.initialize(this);
LeakCanary.install(this);
Fabric.with(this, new Crashlytics());
}
}
应用程序负责整个应用
您可以在应用程序清单中添加启动器活动
并且
在应用程序创建时使用它来根据用户的偏好重新创建整个应用程序
从用例角度来看,与使用情况的另一个区别是扩展 Application 的类通常具有 Application 上下文,这对于某些系统服务是必需的,例如 RoomDatabase 类,它包装了 SQLiteOpenHelper,以便只能创建一个实例(因为它们需要占用大量资源)。 因此,在这种情况下要 extends Application。