Подтвердить что ты не робот

В чем разница между Extends Application и Extends Activity в Android?

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Activity

java.lang.Object
  ↳ android.content.Context
      ↳ android.content.ContextWrapper
          ↳ android.view.ContextThemeWrapper
              ↳ android.app.Activity

И Application

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

Ответ 3

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

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

Вы можете инициализировать глобальные компоненты в расширенном классе Application, так как он будет длиться до тех пор, пока ваш процесс не погибнет, если вы не хотите обрабатывать обычный Activity lifecycle.

Например, инициализация сторонних библиотек, таких как: 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());
    }
}