
应该重用MainActivity,换句话说,我不想再次运行onCreate(),而只是在同一个Activity上运行onResume(),但我有一个奇怪的行为.
似乎AndroidManifest中的launchMode被忽略了.无论我设置什么(singleTask,singleInstance),它总是创建一个新的Activity,导致堆增长.当我使用主页按钮退出应用程序并再次启动时,每次创建新实例时. (观察到.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,但最重要的是上层问题.也许是因为我在onPause()的MainActivity中使用finish()来杀死所有片段.否则碎片会泄漏.片段的onDestroy()调用super.onDestroy(),它可能是MainActivity.
解决方法 我能够找出问题所在.由于包含我的AdMob实现的片段而发生多个实例.这不是“AndroID”问题.片段以某种方式泄漏.上面的代码似乎是正确的. 总结以上是内存溢出为你收集整理的为什么Android会在singleTask或singleInstance上启动多个实例?全部内容,希望文章能够帮你解决为什么Android会在singleTask或singleInstance上启动多个实例?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)