我想要实现的目标:
应该重用MainActivity,换句话说,我不想再次运行onCreate()
,而只是在同一个Activity上运行onResume()
,但我有一个奇怪的行为。
似乎AndroidManifest中的launchMode
被忽略了。无论我设置什么(singleTask
,singleInstance
),它总会创建一个新的活动,从而导致堆积增长。当我使用主页按钮退出应用程序并再次启动时,每次创建新实例时。 (观察到.hprof泄漏报告)。
它的外观如下:
<activity
android:name="com.mydomain.myapp.pro.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="nosensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
当我试图找出问题的时候,我看到Activity会在按下home时被杀死(onDestroy()
被执行),但泄漏报告显示了这一点。每次启动应用程序时,我都会获得越来越多的MainActivity实例,尽管最后一个实例被认为是被销毁的。怎么可能onDestroy()
被执行了,但是我创建了多少实例(直接通过应用程序启动):
有趣的是onDestroy()
完全执行,因为我从不打电话给finish()
而且我仍有很多资源。因此Android不需要杀死Activity,但最重要的是上层问题。也许是因为我在finish()
的MainActivity中按onPause()
删除了所有片段。否则碎片会泄漏。片段的onDestroy()
调用super.onDestroy()
,这可能是MainActivity。
答案 0 :(得分:1)
我能够找出问题所在。由于包含我的AdMob实现的片段而发生多个实例。它没有&#34; Android&#34;问题。片段以某种方式泄漏。上面的代码似乎是正确的。