В чем разница между расширением приложения и расширением активности в 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, так что может быть создан только один экземпляр (поскольку они являются ресурсоемкими) Так расширяет приложение в этом случае