【问题标题】:Will it hurt performance to make ListAdapter.getView() synchronized?使 ListAdapter.getView() 同步会损害性能吗?
【发布时间】:2011-08-07 16:51:45
【问题描述】:

在我的代码中,我发现出于性能原因以防止重复和缓慢的依赖对象实例化,假设对 ArrayAdapter.getView() 的调用不会通过标记为 synchronized 而同时执行,这将非常有帮助。

是否有理由相信 Android 会向 getView 发出多线程调用,并且应用 synchronized 关键字会损害性能?

【问题讨论】:

    标签: android listview thread-safety android-listview listadapter


    【解决方案1】:

    getView() 只会在主应用程序线程上调用,除非出于某种奇怪的原因您自己在后台线程上调用它。因此,同步是不必要的,并且会增加开销。

    【讨论】:

    • 感谢您的快速回答! Android API 中是否有某处提到系统现在或在未来的修订版中不会产生多个线程以利用多核处理器?
    • developer.android.com/guide/topics/fundamentals/… -- "这个线程非常重要,因为它负责将事件分派给适当的用户界面小部件,包括绘图事件。它也是您的应用程序与组件交互的线程来自 Android UI 工具包(来自 android.widget 和 android.view 包的组件)。”多个核心将用于您生成的后台线程;在可预见的未来,用户界面将保持单线程。
    • 非常感谢您提供的信息!如果您不介意我的提问,您在未来版本中保持单线程的 UI 的信息来源是什么?
    • 我从 2008 年初开始从事 Android 开发,知道如果更改单线程 UI 规则,绝大多数应用程序都会崩溃和烧毁。此外,请记住,虽然科技媒体喜欢关注更大/更快/更好,但 Android 仍然需要支持许多市场的低端设备。单线程 UI 模型在很大程度上是为了支持低端设备。
    • 好的,如果你的预测最终是错误的,那么将我的应用程序添加到将崩溃和烧毁的应用程序列表中:)
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 2010-12-17
    • 2011-01-10
    • 1970-01-01
    • 2013-11-26
    • 2011-01-11
    • 1970-01-01
    • 2014-06-17
    相关资源
    最近更新 更多