Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当活动不可见时,ListView和更新适配器会导致性能不佳_Java_Android_Performance_Android Listview - Fatal编程技术网

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的抽象),它保存一个套接字和它自己的线程,并将事件发送给侦听器。所以,我只使用基本的同步。当应用程序转到后台并恢复时,是否停止服务并重新启动它?或者做类似的事情?不,该服务在应用程序的生命周期内一直运行(它实际上是一个前台服务)。但是,该服务与基本消息调度并没有真正的联系,它被用于其他目的。确定不容易的问题:/当应用程序进入后台时,基本上什么都不发生?服务在继续,信息在继续?