应用程序正在放缓[一般]

时间:2014-12-10 09:09:32

标签: android android-intent android-listview broadcastreceiver android-wake-lock

我确实有一个更普遍的问题,没有任何具体的代码。我将解释我的应用程序的功能以及我可以监控的方式和问题。也许你们其中一个人有同样的问题,可以引导我解决这个问题。

应用程序:

它通过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

谢谢!

1 个答案:

答案 0 :(得分:0)

除了我检查过的所有可能性,我都看到了这篇文章:

AsyncTasks for long running Operations

简短:如果您在非常长时间运行的操作中使用AsyncTasks(> 20分钟),则需要记住一些要点。我的问题是,我使用AsyncTask作为内部类。经过很长一段时间,当创建任务的Activity被销毁时,AsyncTask仍然保留了此活动的引用。

在我使用上面文章中描述的总线后,用户界面工作得很好!!

因此,如果有其他人注意到您的应用程序的性能问题,我推荐该文章。

感谢所有其他提示! 玩得开心!