Когда я отлаживал свое приложение с помощью AndroidDeviceMonitor, я обнаружил, что куча моего приложения была странной. После запуска приложения (SplashActivity -> MainActivity), «1-байтовый массив» был выделен 42 МБ. Я был уверен, что SplashActivity был уничтожен, и я использую LeakCanary, чтобы узнать, есть ли утечка памяти. Но я ничего не нашел.Android первая активность не совсем уничтожена
Затем я пытаюсь создать новый SplashActiviy, только setContentView
в onCreate()
метод без какого-либо другого кода.
Схема XML, как это:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center">
<ImageView
android:id="@+id/splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/splash2"/>
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:scaleType="fitCenter"
android:src="@drawable/splashlogo"/>
</RelativeLayout>
отлаживать снова и "1-байтовый массив" по-прежнему 42MB. Затем я пытаюсь удалить тег src
из своего макета. «1-байтовый массив» был уменьшен до 35 МБ. Итак, я думаю, проблема заключается в том, что ресурсы изображения не были переработаны. Может ли кто-нибудь рассказать мне больше о деталях первой запущенной деятельности. Почему он не освобождает эти ресурсы?
Могу ли я увидеть намерение, которое вы используете для запуска MainActivity? – Eoin
Цель намерения = новое намерение (это, MainActivity.class); intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK \t \t \t \t \t \t | Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity (намерение); this.finish(); также попытался удалить эти флаги, получил тот же результат @ Modge –
, когда вы нажмете кнопку «Назад» в своем основном действии, заставка исчезла? – Eoin