В чем разница между расширением приложения и расширением активности в Android? - PullRequest
24 голосов
/ 07 апреля 2010

Я запутался в разнице между ними. В моем приложении я только что использовал Extends Activity, и приложение работает отлично, так какова цель приложения Extends ?.

Будете ли вы использовать его в первом классе, который вы создадите в приложении для Android?

Спасибо.

Ответы [ 4 ]

14 голосов
/ 07 апреля 2010

Класс android.app.Application - это дополнительное средство для расширения и хранения глобального состояния приложения. Есть и другие способы сделать это, поэтому большинство приложений не настраивают этот класс.

Тем не менее, действия определяют все основные этапы вашего приложения. Было бы невозможно создать приложение без деятельности. У вас будет основной класс Activity, и он действительно будет определен как 'extends Activity'.

7 голосов
/ 18 июля 2015

Лучший способ увидеть разницу - увидеть иерархию классов

Активность

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
1 голос
/ 31 января 2016

Просто чтобы добавить к предыдущим ответам.

Класс 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());
    }
}
0 голосов
/ 22 августа 2018

приложение отвечает за все приложение

вы добавляете активность запуска в манифест приложения

и

в приложении при создании создать, чтобы воссоздать все приложение после предпочтения пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...