Java Android中Extends应用程序和Extends活动之间的区别是什么?

Java Android中Extends应用程序和Extends活动之间的区别是什么?,java,android,Java,Android,我对两者的区别感到困惑。在我的应用程序中,我刚刚使用了Extends活动,并且应用程序工作得很好,那么Extends应用程序的目的是什么呢 你会在Android应用程序中创建的第一个类中使用它吗 谢谢。android.app.Application类是扩展和存储应用程序全局状态的可选工具。还有其他方法可以做到这一点,所以大多数应用程序不会自定义此类 然而,活动定义了应用程序的每个主要阶段。如果没有活动,就不可能构建应用程序。您将有一个主活动类,它实际上是用“扩展活动”来定义的。查看差异的最佳方法

我对两者的区别感到困惑。在我的应用程序中,我刚刚使用了Extends活动,并且应用程序工作得很好,那么Extends应用程序的目的是什么呢

你会在Android应用程序中创建的第一个类中使用它吗


谢谢。

android.app.Application类是扩展和存储应用程序全局状态的可选工具。还有其他方法可以做到这一点,所以大多数应用程序不会自定义此类


然而,活动定义了应用程序的每个主要阶段。如果没有活动,就不可能构建应用程序。您将有一个主活动类,它实际上是用“扩展活动”来定义的。

查看差异的最佳方法是查看它的类层次结构

应用程序是在你的android应用程序进程被终止之前一直存在的东西。您可以使用它来存储特定于应用程序的数据(只要您的应用程序处于活动状态),这些数据可以在各种活动中使用。注意我不是说你应该。。。共享首选项可能是其他合适的方式,具体取决于您的用例。另外,需要明确的是,与清单文件中提供的启动器活动不同,您不能使用应用程序启动应用程序

您可以使用自己的自定义应用程序类,如下所示

<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>

只是为了补充前面的答案

应用程序
类将是一个单例,只要你的应用程序还活着,它就会一直存在

您可以在
应用程序
扩展类中初始化全局组件,因为如果您不想处理通常的
活动
,它将一直持续到进程死亡

例如,第三方库的初始化,如:Parse、CanaryLeak、Crashlytics

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        Parse.initialize(this);
        LeakCanary.install(this);
        Fabric.with(this, new Crashlytics());
    }
}

应用程序负责整个应用程序

在应用程序清单中添加启动器活动


在“创建时使用”应用程序中,根据用户的偏好重新创建整个应用程序

从用例的角度来看,另一个区别是扩展应用程序的类通常具有某些系统服务所需的应用程序上下文,比如说一个RoomDatabase类,它围绕SQLiteOpenHelper进行包装,这样就只能创建一个实例(因为它们是资源密集型的),所以在这种情况下扩展了应用程序

我不是说学究,但您的意思是“如果没有活动,就不可能构建应用程序”?。我只想完全弄清楚这一点。活动是应用程序的组成部分。类似于web应用程序的页面。任何应用程序都至少会有一个(尽管我想你可能会有一个没有的小部件)。您的应用程序将需要一个入口点活动。所以,您可以启动扩展应用程序的类,类似于使用intent启动活动吗?您不能启动应用程序类号。
<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
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        Parse.initialize(this);
        LeakCanary.install(this);
        Fabric.with(this, new Crashlytics());
    }
}