当Activity不可见时,ListView和更新适配器会导致性能下降

时间:2013-08-23 13:35:07

标签: java android performance android-listview

我遇到了性能问题。

所以我正在编写一个聊天应用程序,每个单独的聊天中都有ViewPager个片段,ViewPager位于ChatActivity,片段中的消息是通过简单的ListView显示。

只要我“最小化”我的申请,一切都很顺利。当应用程序被最小化,并且我在那段时间内收到,只说10条消息,并返回到活动时,会有明显的延迟(例如,标准的Android应用程序恢复动画无法播放)。如果我再次最小化应用程序并立即恢复它,则延迟完全消失(假设没有新消息到达)。

性能似乎与已到达的新消息量没有关联:是否有10或500条新消息,延迟是相同的。

我收到来自Socket的邮件,将其传递给Chat对象,只需将其传递给ChatFragmentlistView.post()只使用ListView将其发布到ChatFragment

我的ListViewArrayList适配器非常简单,因此我不在此处发布,消息存储在Chat对象的Activity中(适配器只是从那里拉出来的..)我真的没有做任何“花哨的”。

简单地说,当我的ListView(及其中的片段)暂停,并且新数据发布到ListView时,Fragment(我假设)必须恢复ListView并且Activity被“刷新”后,“立即执行更多工作”。

这可能是一个有点模糊而不码,但也许有人能告诉我,如果我的原则是至少权(即简单地张贴()的消息适配器,无论如果Fragment和{{1}用户可以看到吗?)。

如果有人有任何想法会导致这种延迟,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我对新消息和ListView问题的直觉是完全错误的!导致速度放缓的原因是我有一个启动器活动启动以前可见的活动或显示自己(如果没有)。我没有在finish()中调用onCreate(),而是简单地调用了return!这导致活动继续其生命周期,在幕后做任何事情,导致减速。