我确实有一个更普遍的问题,没有任何具体的代码。我将解释我的应用程序的功能以及我可以监控的方式和问题。也许你们其中一个人有同样的问题,可以引导我解决这个问题。
应用程序:
它通过Bluetooth
读取汽车诊断数据(OnBoardDiagnostics),并在ListView
中实时显示。我可以通过"更新按钮"
如何:
每次通过Bluetooth
收到新值时,后台类(处理String
形成)会发送Intent
以通知UI更新ListView。
我的ListView的Adapter
类已经注册了监听BroadcastReceiver
,如果它被触发,它将通过ListView
通知notifyDataSetChanged()
。
的问题:
1.如果我使用WakeLock
来保持屏幕开启,则UI刷新后的刷新速度会降低。 10分钟。
2.如果我按下电源按钮,屏幕关闭,它仍然会变慢(我可以看到,因为我将值发送到网络服务器)但是此外:如果我重新打开屏幕。我看到ListView
停止约20-30秒,而且通常以正常速度继续(不再慢)。
所以..我认为这是一个非常普遍的问题。我搜索了WakeLock
和睡眠行为,但我找不到任何类似的问题。也许你们其中一个人可以给我一个提示,问题可能是什么。也许你们其中一个人有类似的问题。
任何提示都表示赞赏!
编辑1:
也许2.问题的问题是基于我的对象/活动的生命周期。
如果我按下更新按钮,则启动AsyncTask
,它将数据(JSON,其中包含所有列表项的一个新值)发送到我的Web服务器。如果设备屏幕关闭,我仍然每2秒获取一次数据。如果我打开屏幕,它会停止20-30秒以及UI。所以我认为我的UI运行正常。更新意图发送正确。
我必须检查是否仍然在上面提到的那个后台类中接收到新值。 感谢zapl
谢谢!
答案 0 :(得分:0)
除了我检查过的所有可能性,我都看到了这篇文章:
AsyncTasks for long running Operations
简短:如果您在非常长时间运行的操作中使用AsyncTasks(> 20分钟),则需要记住一些要点。我的问题是,我使用AsyncTask作为内部类。经过很长一段时间,当创建任务的Activity被销毁时,AsyncTask仍然保留了此活动的引用。
在我使用上面文章中描述的总线后,用户界面工作得很好!!
因此,如果有其他人注意到您的应用程序的性能问题,我推荐该文章。
感谢所有其他提示! 玩得开心!