android– 如果Asynctask正在运行,即使在finish()方法之后,活动还会存活吗?

android– 如果Asynctask正在运行,即使在finish()方法之后,活动还会存活吗?,第1张

概述Onthelongrun,AsyncTaskproducesamemoryleak:iftheAsyncTasklastsforlong,itkeepstheactivity“alive”whereasAndroidwouldliketogetridofitasitcannolongerbedisplayed.Theactivitycan’tbegarbagecollectedandthat’sace

On the long run, AsyncTask produces a memory leak : if the AsyncTask lasts
for long, it keeps the activity “alive” whereas Android would like to
get rID of it as it can no longer be displayed. The activity can’t be
garbage collected and that’s a central mechanism for AndroID to
preserve resources on the device.

这是否意味着如果我们调用finish()方法并且asynctask正在运行,那么活动将保持“活着”?如果没有,那么这意味着什么

if the AsyncTask lasts for long, it keeps the activity “alive”?

除非我们调用finish()方法或按下后退按钮,否则Activity将处于活动状态.这是否意味着如果asyntask正在运行,那么即使在那之后活动也会存活

解决方法:

如果AsyncTask被声明为活动内部的非静态内部类,则意味着它始终拥有对创建它的封闭外部类的强引用.因此,只要AsyncTask正在运行,它就会保存对活动的强引用,这意味着即使在调用finish()并执行onDestroy()之后它也不会被垃圾收集.这是AsyncTask的一个非常常见的问题,没有正确实现以防止这种情况.

总结

以上是内存溢出为你收集整理的android – 如果Asynctask正在运行,即使在finish()方法之后,活动还会存活吗?全部内容,希望文章能够帮你解决android – 如果Asynctask正在运行,即使在finish()方法之后,活动还会存活吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存