當我用AndroidDeviceMonitor調試我的應用時,發現我的應用堆很奇怪。啓動應用程序(SplashActivity - > MainActivity)後,「1字節數組」分配了42MB。我確信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字節數組」減少到35MB。所以,我想問題是圖像資源沒有被回收。任何人都可以告訴我更多關於第一次啓動活動的細節。爲什麼它不釋放這些資源?
我可以看到您用來啓動MainActivity的意圖嗎? – Eoin
Intent intent = new Intent(this,MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK \t \t \t \t \t \t | Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(intent); this.finish(); 也tryed刪除這些標誌,得到了相同的結果@ Modge –
當你在主要活動中按下後退按鈕,啓動畫面沒有了嗎? – Eoin