Java 当活动不可见时,ListView和更新适配器会导致性能不佳
我有一个性能问题 因此,我正在编写一个聊天应用程序,我有一个Java 当活动不可见时,ListView和更新适配器会导致性能不佳,java,android,performance,android-listview,Java,Android,Performance,Android Listview,我有一个性能问题 因此,我正在编写一个聊天应用程序,我有一个ViewPager,其中包含每个单独聊天的片段,ViewPager存在于ChatActivity,片段中的消息通过一个简单的列表视图显示 只要我“最小化”我的应用程序,一切都是顺利的。当应用程序最小化时,我在这段时间内收到(比如说)10条消息,然后返回到活动,会有明显的延迟(例如,标准的Android应用程序还原动画不会播放)。如果我再次最小化应用程序,并立即恢复,延迟将完全消失(假设没有新消息到达) 性能似乎与已到达的新消息量无关:无
ViewPager
,其中包含每个单独聊天的片段,ViewPager
存在于ChatActivity
,片段中的消息通过一个简单的列表视图显示
只要我“最小化”我的应用程序,一切都是顺利的。当应用程序最小化时,我在这段时间内收到(比如说)10条消息,然后返回到活动,会有明显的延迟(例如,标准的Android应用程序还原动画不会播放)。如果我再次最小化应用程序,并立即恢复,延迟将完全消失(假设没有新消息到达)
性能似乎与已到达的新消息量无关:无论是10条还是500条新消息,延迟都是相同的
我从Socket
接收消息,将消息传递给Chat
对象,该对象只需将消息传递给ChatFragment
,该对象仅使用listView.post()
将消息发布到listView
我的ChatFragment
和ListView
的适配器非常简单,所以我不在这里发布它们,消息存储在Chat
对象的ArrayList
中(适配器只是从那里提取它们)。。我真的没有做任何“花哨”的事
简单地说,当我的活动
(以及其中的片段)被暂停,新数据被发布到列表视图
,当片段
被恢复并且列表视图
被“刷新”时,列表视图
(我假设)必须“一次做更多的工作”
如果没有代码,这可能有点含糊不清,但也许有人可以告诉我我的原则是否至少正确(即简单地将消息post()到适配器,而不管用户是否可以看到活动
和片段
)
如果有人知道是什么原因导致了这次延迟,我将不胜感激。我对新消息和列表视图问题的直觉是完全错误的!导致减速的原因是我有一个启动程序活动,它启动以前可见的活动,或者在没有活动的情况下显示自己。我没有在它的onCreate()
中调用finish()
,而是简单地调用了return
!这导致活动继续其生命周期,在幕后执行任何操作,从而导致速度减慢。您使用的是哪种多线程?您使用服务吗?是的,我使用服务,但不是为了发送和接收消息。我只是有一个“服务器”类(IRCServer的抽象),它保存一个套接字和它自己的线程,并将事件发送给侦听器。所以,我只使用基本的同步。当应用程序转到后台并恢复时,是否停止服务并重新启动它?或者做类似的事情?不,该服务在应用程序的生命周期内一直运行(它实际上是一个前台服务)。但是,该服务与基本消息调度并没有真正的联系,它被用于其他目的。确定不容易的问题:/当应用程序进入后台时,基本上什么都不发生?服务在继续,信息在继续?