В чем разница между расширением приложения и расширением активности в Android?

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

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

Благодарю.

4 ответа

Решение

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

Тем не менее, действия определяют все основные этапы вашего приложения. Было бы невозможно создать приложение без деятельности. У вас будет основной класс Activity, и он действительно будет определен как 'extends 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 класс будет единственным, который будет жить до тех пор, пока ваше приложение живо.

Вы можете инициализировать глобальные компоненты в вашем 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());
    }
}

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

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

а также

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

Еще одно отличие от точки зрения варианта использования заключается в том, что классы, расширяющие Application, обычно имеют контекст Application, который требуется для некоторых системных служб, например, класс RoomDatabase, который обертывает SQLiteOpenHelper, так что может быть создан только один экземпляр (поскольку они являются ресурсоемкими) Так расширяет приложение в этом случае

Другие вопросы по тегам