Android中的Extends Application和Extends Activity有什么区别?

我对这两者之间的区别感到困惑。 在我的应用程序中,我只用了Extends Activity,应用程序运行良好,那么Extends Application的用途是什么?

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

谢谢。

Solutions Collecting From Web of "Android中的Extends Application和Extends Activity有什么区别?"

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

然而,活动定义了应用程序的每个主要阶段。 没有活动就不可能build立一个应用程序。 你将有一个主要的活动类,这将确定与'扩展活动'。

看到差异的最好方法是看它的类层次结构

活动

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 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类将是一个单身人士,只要你的应用程序还活着就会活着。

你可以初始化你的Application扩展类中的全局组件,因为如果你不想用普通的Activity 生命周期来处理它,它将持续到你的进程死亡。

例如,第三方库的初始化如: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()); } }