3 回答
TA贡献1784条经验 获得超2个赞
正如 Michael Butscher 已经提到的,你绝对应该看看 GamesLibrary 类。如果它是你的,你有机会通过将长时间运行的任务移动到后台线程而不是使用 UI 线程来改进很多。
除此之外,我想给你一些代码风格的技巧。
您可以使用 switch-block 而不是所有 else if 块。这将大大缩短您的代码并使其更具可读性。
对于您经常使用的字符串或其他值并且不会改变使用常量。(例如,您所有的 SharedPreferences 键)当您必须更改其中一些值时,这将减少您的大量工作。
您还应该在 getSharedPreferences() 中使用提供的常量,如 Context.MODE_PRIVATE。代码易读性。
TA贡献1828条经验 获得超13个赞
这可以通过View Holder 模式来改进。不要为每个项目填充新视图并进行所有样板设置,而是重用以前为现在不在可见区域的项目创建的视图。
请注意,这已经回答了几次。看看以下问题和答案:
我会改变其他事情以提高性能:
删除对“正常”行为的异常使用。代码通常针对非异常流(需要引用)进行优化,因此经常遇到 catch 块可能是一个问题。
从 切换
SharedPreferences.Editor.commit()
到SharedPreferences.Editor.apply()
。基于文档commit()
同步写入磁盘,而apply()
仅写入内存结构并异步写入磁盘。这里的问题可能是您先创建侦听器,然后调用setChecked
. 检查侦听器是否在被调用时setChecked
被调用,并setChecked
在代码中切换侦听器的创建和。看看长
if ... else ... if
是不是问题。试试地图。不要为每个新项目创建新的侦听器。每创建一次
ViewHolder
,将gl
项目上的项设置ViewHolder
为字段,并在侦听器中引用该字段。
如果你想花哨,可以使用Android Profiler来衡量方法的性能,看看你大部分时间都花在了什么地方。
添加回答
举报